diff options
author | Jeremy Allison <jra@samba.org> | 2001-01-08 20:37:48 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-01-08 20:37:48 +0000 |
commit | 3a50ad16c5b51d0d812e50cfb65ff43a5786d131 (patch) | |
tree | 444489de7c547a2009316359f12e418ec5c39d6c /source/smbwrapper/smbw_dir.c | |
parent | 4afc02447d4de9aaa329e4ec59d36f91716835c0 (diff) | |
download | samba-3a50ad16c5b51d0d812e50cfb65ff43a5786d131.tar.gz samba-3a50ad16c5b51d0d812e50cfb65ff43a5786d131.tar.xz samba-3a50ad16c5b51d0d812e50cfb65ff43a5786d131.zip |
Big merge to sync up appliance-head and 2.2.
Jeremy.
Diffstat (limited to 'source/smbwrapper/smbw_dir.c')
-rw-r--r-- | source/smbwrapper/smbw_dir.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/source/smbwrapper/smbw_dir.c b/source/smbwrapper/smbw_dir.c index 09294282736..89d137473f3 100644 --- a/source/smbwrapper/smbw_dir.c +++ b/source/smbwrapper/smbw_dir.c @@ -78,7 +78,7 @@ static struct smbw_dir *cur_dir; /***************************************************** add a entry to a directory listing *******************************************************/ -static void smbw_dir_add(struct file_info *finfo, const char *mask) +static void smbw_dir_add(struct file_info *finfo, const char *mask, void * NULL) { DEBUG(5,("%s\n", finfo->name)); @@ -100,7 +100,8 @@ static void smbw_dir_add(struct file_info *finfo, const char *mask) /***************************************************** add a entry to a directory listing *******************************************************/ -static void smbw_share_add(const char *share, uint32 type, const char *comment) +static void smbw_share_add(const char *share, uint32 type, + const char *comment, void *state) { struct file_info finfo; @@ -119,7 +120,7 @@ static void smbw_share_add(const char *share, uint32 type, const char *comment) add a server to a directory listing *******************************************************/ static void smbw_server_add(const char *name, uint32 type, - const char *comment) + const char *comment, void *state) { struct file_info finfo; @@ -199,36 +200,45 @@ int smbw_dir_open(const char *fname) slprintf(mask, sizeof(mask)-1, "%s\\*", path); all_string_sub(mask,"\\\\","\\",0); - if ((p=strstr(srv->server_name,"#1D"))) { + if ((p=strstr(srv->server_name,"#01"))) { + *p = 0; + smbw_server_add(".",0,"", NULL); + smbw_server_add("..",0,"", NULL); + cli_NetServerEnum(&srv->cli, srv->server_name, SV_TYPE_DOMAIN_ENUM, + smbw_server_add, NULL); + *p = '#'; + } else if ((p=strstr(srv->server_name,"#1D"))) { DEBUG(4,("doing NetServerEnum\n")); *p = 0; - smbw_server_add(".",0,""); - smbw_server_add("..",0,""); + smbw_server_add(".",0,"", NULL); + smbw_server_add("..",0,"", NULL); cli_NetServerEnum(&srv->cli, srv->server_name, SV_TYPE_ALL, - smbw_server_add); + smbw_server_add, NULL); *p = '#'; } else if (strcmp(srv->cli.dev,"IPC") == 0) { DEBUG(4,("doing NetShareEnum\n")); - smbw_share_add(".",0,""); - smbw_share_add("..",0,""); - if (cli_RNetShareEnum(&srv->cli, smbw_share_add) < 0) { + smbw_share_add(".",0,"", NULL); + smbw_share_add("..",0,"", NULL); + if (cli_RNetShareEnum(&srv->cli, smbw_share_add, NULL) < 0) { errno = smbw_errno(&srv->cli); goto failed; } } else if (strncmp(srv->cli.dev,"LPT",3) == 0) { - smbw_share_add(".",0,""); - smbw_share_add("..",0,""); + smbw_share_add(".",0,"", NULL); + smbw_share_add("..",0,"", NULL); if (cli_print_queue(&srv->cli, smbw_printjob_add) < 0) { errno = smbw_errno(&srv->cli); goto failed; } } else { +#if 0 if (strcmp(path,"\\") == 0) { smbw_share_add(".",0,""); smbw_share_add("..",0,""); } +#endif if (cli_list(&srv->cli, mask, aHIDDEN|aSYSTEM|aDIR, - smbw_dir_add) < 0) { + smbw_dir_add, NULL) < 0) { errno = smbw_errno(&srv->cli); goto failed; } |