diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-10-04 11:25:06 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-10-04 11:25:06 +0000 |
commit | 1970c92c0a56672308314d39718f994302c95c95 (patch) | |
tree | c86bf6108aac78b6d8d6c7581d2809f1a7063668 /source3/smbwrapper/smbw_dir.c | |
parent | f2c43ee03933b10cd815af233910d3a0c756f219 (diff) | |
download | samba-1970c92c0a56672308314d39718f994302c95c95.tar.gz samba-1970c92c0a56672308314d39718f994302c95c95.tar.bz2 samba-1970c92c0a56672308314d39718f994302c95c95.zip |
support NetServerEnum in smbwrapper. You can now do a ls in /smb/ and
it will list all servers in your workgroup. You can set your workgroup
with the SMBW_WORKGROUP environment variable.
(This used to be commit 64699810e2d94e8648a0a3341b1cc826d4e8bfd9)
Diffstat (limited to 'source3/smbwrapper/smbw_dir.c')
-rw-r--r-- | source3/smbwrapper/smbw_dir.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/source3/smbwrapper/smbw_dir.c b/source3/smbwrapper/smbw_dir.c index 3fdaebec5a..d794944b1a 100644 --- a/source3/smbwrapper/smbw_dir.c +++ b/source3/smbwrapper/smbw_dir.c @@ -113,6 +113,23 @@ 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) +{ + struct file_info finfo; + + ZERO_STRUCT(finfo); + + pstrcpy(finfo.name, name); + finfo.mode = aRONLY | aDIR; + + smbw_dir_add(&finfo); +} + + +/***************************************************** add a entry to a directory listing *******************************************************/ static void smbw_printjob_add(struct print_job_info *job) @@ -145,7 +162,7 @@ int smbw_dir_open(const char *fname) struct smbw_dir *dir=NULL; pstring mask; int fd; - char *s; + char *s, *p; DEBUG(4,("%s\n", __FUNCTION__)); @@ -181,7 +198,13 @@ int smbw_dir_open(const char *fname) slprintf(mask, sizeof(mask)-1, "%s\\*", path); string_sub(mask,"\\\\","\\"); - if (strcmp(srv->cli.dev,"IPC") == 0) { + if ((p=strstr(srv->server_name,"#1D"))) { + DEBUG(4,("doing NetServerEnum\n")); + *p = 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")); if (cli_RNetShareEnum(&srv->cli, smbw_share_add) < 0) { errno = smbw_errno(&srv->cli); |