diff options
author | Jeremy Allison <jra@samba.org> | 2010-10-29 11:56:51 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-10-29 19:40:16 +0000 |
commit | 14ff2e8de9bd8d0064762234555260f5eea643fe (patch) | |
tree | abd73a321e4f9855c9fcaf729d7a9ef7f91112ab /source3/torture/nbio.c | |
parent | 606a447503defdeddc84ae03e06b392517c840c5 (diff) | |
download | samba-14ff2e8de9bd8d0064762234555260f5eea643fe.tar.gz samba-14ff2e8de9bd8d0064762234555260f5eea643fe.tar.bz2 samba-14ff2e8de9bd8d0064762234555260f5eea643fe.zip |
Fix bug #7700 - Improvement of return code of smbclient
Based on an initial patch from H Hasegawa <hasegawa.hiroyuki@fujixerox.co.jp>.
Convert cli_list and associated functions to take calls that return NTSTATUS.
Jeremy.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri Oct 29 19:40:16 UTC 2010 on sn-devel-104
Diffstat (limited to 'source3/torture/nbio.c')
-rw-r--r-- | source3/torture/nbio.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/source3/torture/nbio.c b/source3/torture/nbio.c index 1e72a6f7e4..f4625ab632 100644 --- a/source3/torture/nbio.c +++ b/source3/torture/nbio.c @@ -264,10 +264,11 @@ void nb_qfsinfo(int level) cli_dskattr(c, &bsize, &total, &avail); } -static void find_fn(const char *mnt, struct file_info *finfo, const char *name, +static NTSTATUS find_fn(const char *mnt, struct file_info *finfo, const char *name, void *state) { /* noop */ + return NT_STATUS_OK; } void nb_findfirst(const char *mask) @@ -284,9 +285,10 @@ void nb_flush(int fnum) static int total_deleted; -static void delete_fn(const char *mnt, struct file_info *finfo, +static NTSTATUS delete_fn(const char *mnt, struct file_info *finfo, const char *name, void *state) { + NTSTATUS status; char *s, *n; if (finfo->name[0] == '.') return; @@ -294,15 +296,20 @@ static void delete_fn(const char *mnt, struct file_info *finfo, n[strlen(n)-1] = 0; if (asprintf(&s, "%s%s", n, finfo->name) == -1) { printf("asprintf failed\n"); - return; + return NT_STATUS_NO_MEMORY; } if (finfo->mode & aDIR) { char *s2; if (asprintf(&s2, "%s\\*", s) == -1) { printf("asprintf failed\n"); - return; + return NT_STATUS_NO_MEMORY; + } + status = cli_list(c, s2, aDIR, delete_fn, NULL); + if (!NT_STATUS_IS_OK(status)) { + free(n); + free(s2); + return status; } - cli_list(c, s2, aDIR, delete_fn, NULL); nb_rmdir(s); } else { total_deleted++; @@ -310,6 +317,7 @@ static void delete_fn(const char *mnt, struct file_info *finfo, } free(s); free(n); + return NT_STATUS_OK; } void nb_deltree(const char *dname) |