From 34fea75f35b61841886234e5f167ecf32d95c9c2 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Sat, 6 Jan 2001 14:48:55 +0000 Subject: Fix some more bugs in libsmbclient.c and add functionality to tree.c (This used to be commit d6cef8877a7ed80329b3ba67231a94601fcfd060) --- source3/libsmb/libsmbclient.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'source3/libsmb') diff --git a/source3/libsmb/libsmbclient.c b/source3/libsmb/libsmbclient.c index 50d330e363..960fa1d3da 100644 --- a/source3/libsmb/libsmbclient.c +++ b/source3/libsmb/libsmbclient.c @@ -1241,6 +1241,19 @@ list_fn(const char *name, uint32 type, const char *comment, void *state) } +static void +dir_list_fn(file_info *finfo, const char *mask, void *state) +{ + + fprintf(stderr, "Finfo->name=%s, mask=%s\n", finfo->name, mask); + if (add_dirent((struct smbc_file *)state, finfo->name, "", SMBC_FILE) < 0) { + + /* Handle an error ... */ + + } + +} + int smbc_opendir(const char *fname) { struct in_addr addr; @@ -1447,8 +1460,35 @@ int smbc_opendir(const char *fname) } else { /* The server and share are specified ... work from there ... */ + /* Well, we connect to the server and list the directory */ + + smbc_file_table[slot]->dir_type = SMBC_FILE_SHARE; + + srv = smbc_server(server, share); + if (!srv) { + if (smbc_file_table[slot]) free(smbc_file_table[slot]); + smbc_file_table[slot] = NULL; + return -1; + + } + + smbc_file_table[slot]->srv = srv; + + /* Now, list the files ... */ + + pstrcat(path, "\\*"); + + if (!cli_list(&srv->cli, path, aDIR | aSYSTEM | aHIDDEN, dir_list_fn, + (void *)smbc_file_table[slot])) { + + if (smbc_file_table[slot]) free(smbc_file_table[slot]); + smbc_file_table[slot] = NULL; + errno = smbc_errno(&srv->cli); + return -1; + + } } } -- cgit