1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-02 00:22:11 +03:00

Fix some more bugs in libsmbclient.c and add functionality to tree.c

(This used to be commit d6cef8877a)
This commit is contained in:
Richard Sharpe
2001-01-06 14:48:55 +00:00
parent a0feaf62b7
commit 34fea75f35
2 changed files with 63 additions and 5 deletions

View File

@ -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;
}
}
}