diff options
Diffstat (limited to 'source3/smbwrapper/smbw_dir.c')
-rw-r--r-- | source3/smbwrapper/smbw_dir.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source3/smbwrapper/smbw_dir.c b/source3/smbwrapper/smbw_dir.c index d374d5f179..4d1e3cc179 100644 --- a/source3/smbwrapper/smbw_dir.c +++ b/source3/smbwrapper/smbw_dir.c @@ -202,21 +202,31 @@ int smbw_dir_open(const char *fname) if ((p=strstr(srv->server_name,"#1D"))) { DEBUG(4,("doing NetServerEnum\n")); *p = 0; + smbw_server_add(".",0,""); + smbw_server_add("..",0,""); cli_NetServerEnum(&srv->cli, srv->server_name, SV_TYPE_ALL, smbw_server_add); *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) { errno = smbw_errno(&srv->cli); goto failed; } } else if (strncmp(srv->cli.dev,"LPT",3) == 0) { + smbw_share_add(".",0,""); + smbw_share_add("..",0,""); if (cli_print_queue(&srv->cli, smbw_printjob_add) < 0) { errno = smbw_errno(&srv->cli); goto failed; } } else { + if (strcmp(path,"\\") == 0) { + smbw_share_add(".",0,""); + smbw_share_add("..",0,""); + } if (cli_list(&srv->cli, mask, aHIDDEN|aSYSTEM|aDIR, smbw_dir_add) < 0) { errno = smbw_errno(&srv->cli); @@ -396,7 +406,7 @@ int smbw_chdir(const char *name) if (strncmp(srv->cli.dev,"IPC",3) && strncmp(srv->cli.dev,"LPT",3) && !smbw_getatr(srv, path, - &mode, NULL, NULL, NULL, NULL)) { + &mode, NULL, NULL, NULL, NULL, NULL)) { errno = smbw_errno(&srv->cli); goto failed; } |