summaryrefslogtreecommitdiff
path: root/source3/utils
diff options
context:
space:
mode:
Diffstat (limited to 'source3/utils')
-rw-r--r--source3/utils/masktest.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/source3/utils/masktest.c b/source3/utils/masktest.c
index 9a4d7156b4..c1e27c564c 100644
--- a/source3/utils/masktest.c
+++ b/source3/utils/masktest.c
@@ -39,13 +39,12 @@ int ms_fnmatch_lanman_core(char *pattern, char *string)
char *p = pattern, *n = string;
char c;
- // printf("ms_fnmatch_lanman_core(%s, %s)\n", pattern, string);
+ // printf("ms_fnmatch_lanman_core(%s, %s)\n", pattern, string);
while ((c = *p++)) {
switch (c) {
case '?':
- if (*n == 0 && ms_fnmatch_lanman_core(p, n) == 0) return 0;
- if (! *n && !*p) return 0;
+ if (! *n) return ms_fnmatch_lanman_core(p, n);
n++;
break;
@@ -124,13 +123,13 @@ static BOOL reg_match_one(char *pattern, char *file)
/* oh what a weird world this is */
if (old_list && strcmp(pattern, "*.*") == 0) return True;
+ if (strcmp(file,"..") == 0) file = ".";
+ if (strcmp(pattern,".") == 0) return False;
+
if (max_protocol <= PROTOCOL_LANMAN2) {
return ms_fnmatch_lanman(pattern, file)==0;
}
- if (strcmp(file,"..") == 0) file = ".";
- if (strcmp(pattern,".") == 0) return False;
-
return ms_fnmatch(pattern, file)==0;
}
@@ -263,6 +262,8 @@ void listfn(file_info *f, const char *s, void *state)
static void get_real_name(struct cli_state *cli,
pstring long_name, fstring short_name)
{
+ /* nasty hack to force level 260 listings - tridge */
+ cli->capabilities |= CAP_NT_SMBS;
if (max_protocol <= PROTOCOL_LANMAN1) {
cli_list_new(cli, "\\masktest\\*.*", aHIDDEN | aDIR, listfn, NULL);
} else {