diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-10-02 12:30:02 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:59:33 -0500 |
commit | d1a568363049c82f4314f7a1c5453a92bee84343 (patch) | |
tree | cedcff10931077c5bdbce835f6d9049cfbcbb04b /source4 | |
parent | 84bbe948f3beff0fbdc51c9c63e2f674b70b5bbe (diff) | |
download | samba-d1a568363049c82f4314f7a1c5453a92bee84343.tar.gz samba-d1a568363049c82f4314f7a1c5453a92bee84343.tar.bz2 samba-d1a568363049c82f4314f7a1c5453a92bee84343.zip |
r2787: force masktest to use RAW_SEARCH_BOTH_DIRECTORY_INFO so it can obtain the short name
(This used to be commit ad5a5ea08d5be812e0ef662948477add2433bc6f)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/libcli/clilist.c | 18 | ||||
-rw-r--r-- | source4/torture/masktest.c | 5 |
2 files changed, 14 insertions, 9 deletions
diff --git a/source4/libcli/clilist.c b/source4/libcli/clilist.c index 2659e81419..84d96d62f4 100644 --- a/source4/libcli/clilist.c +++ b/source4/libcli/clilist.c @@ -103,8 +103,9 @@ static BOOL smbcli_list_new_callback(void *private, union smb_search_data *file) } int smbcli_list_new(struct smbcli_tree *tree, const char *Mask, uint16_t attribute, - void (*fn)(file_info *, const char *, void *), - void *caller_state) + enum smb_search_level level, + void (*fn)(file_info *, const char *, void *), + void *caller_state) { union smb_search_first first_parms; union smb_search_next next_parms; @@ -125,11 +126,14 @@ int smbcli_list_new(struct smbcli_tree *tree, const char *Mask, uint16_t attribu state.dirlist = talloc(state.mem_ctx, 0); mask = talloc_strdup(state.mem_ctx, Mask); - if (tree->session->transport->negotiate.capabilities & CAP_NT_SMBS) { - state.info_level = RAW_SEARCH_BOTH_DIRECTORY_INFO; - } else { - state.info_level = RAW_SEARCH_STANDARD; + if (level == RAW_SEARCH_GENERIC) { + if (tree->session->transport->negotiate.capabilities & CAP_NT_SMBS) { + level = RAW_SEARCH_BOTH_DIRECTORY_INFO; + } else { + level = RAW_SEARCH_STANDARD; + } } + state.info_level = level; while (1) { state.ff_searchcount = 0; @@ -336,5 +340,5 @@ int smbcli_list(struct smbcli_tree *tree, const char *Mask,uint16_t attribute, { if (tree->session->transport->negotiate.protocol <= PROTOCOL_LANMAN1) return smbcli_list_old(tree, Mask, attribute, fn, state); - return smbcli_list_new(tree, Mask, attribute, fn, state); + return smbcli_list_new(tree, Mask, attribute, RAW_SEARCH_GENERIC, fn, state); } diff --git a/source4/torture/masktest.c b/source4/torture/masktest.c index 4097c8c35a..dbd7c2f74b 100644 --- a/source4/torture/masktest.c +++ b/source4/torture/masktest.c @@ -121,8 +121,9 @@ static void get_real_name(struct smbcli_state *cli, f_info_hit = False; smbcli_list_new(cli->tree, mask, - FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY, - listfn, NULL); + FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY, + RAW_SEARCH_BOTH_DIRECTORY_INFO, + listfn, NULL); if (f_info_hit) { fstrcpy(short_name, last_hit.short_name); |