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/torture.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/torture.c')
-rw-r--r-- | source3/torture/torture.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/source3/torture/torture.c b/source3/torture/torture.c index c416a161e0..57db3d47b7 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -4923,13 +4923,14 @@ static bool run_openattrtest(int dummy) return correct; } -static void list_fn(const char *mnt, struct file_info *finfo, +static NTSTATUS list_fn(const char *mnt, struct file_info *finfo, const char *name, void *state) { int *matched = (int *)state; if (matched != NULL) { *matched += 1; } + return NT_STATUS_OK; } /* @@ -4995,7 +4996,7 @@ static bool run_dirtest(int dummy) return correct; } -static void del_fn(const char *mnt, struct file_info *finfo, const char *mask, +static NTSTATUS del_fn(const char *mnt, struct file_info *finfo, const char *mask, void *state) { struct cli_state *pcli = (struct cli_state *)state; @@ -5003,7 +5004,7 @@ static void del_fn(const char *mnt, struct file_info *finfo, const char *mask, slprintf(fname, sizeof(fname), "\\LISTDIR\\%s", finfo->name); if (strcmp(finfo->name, ".") == 0 || strcmp(finfo->name, "..") == 0) - return; + return NT_STATUS_OK; if (finfo->mode & aDIR) { if (!NT_STATUS_IS_OK(cli_rmdir(pcli, fname))) @@ -5012,6 +5013,7 @@ static void del_fn(const char *mnt, struct file_info *finfo, const char *mask, if (!NT_STATUS_IS_OK(cli_unlink(pcli, fname, aSYSTEM | aHIDDEN))) printf("del_fn: failed to unlink %s\n,", fname ); } + return NT_STATUS_OK; } @@ -6312,23 +6314,30 @@ static bool run_uid_regression_test(int dummy) static const char *illegal_chars = "*\\/?<>|\":"; static char force_shortname_chars[] = " +,.[];=\177"; -static void shortname_del_fn(const char *mnt, struct file_info *finfo, +static NTSTATUS shortname_del_fn(const char *mnt, struct file_info *finfo, const char *mask, void *state) { struct cli_state *pcli = (struct cli_state *)state; fstring fname; + NTSTATUS status = NT_STATUS_OK; + slprintf(fname, sizeof(fname), "\\shortname\\%s", finfo->name); if (strcmp(finfo->name, ".") == 0 || strcmp(finfo->name, "..") == 0) - return; + return NT_STATUS_OK; if (finfo->mode & aDIR) { - if (!NT_STATUS_IS_OK(cli_rmdir(pcli, fname))) + status = cli_rmdir(pcli, fname); + if (!NT_STATUS_IS_OK(status)) { printf("del_fn: failed to rmdir %s\n,", fname ); + } } else { - if (!NT_STATUS_IS_OK(cli_unlink(pcli, fname, aSYSTEM | aHIDDEN))) + status = cli_unlink(pcli, fname, aSYSTEM | aHIDDEN); + if (!NT_STATUS_IS_OK(status)) { printf("del_fn: failed to unlink %s\n,", fname ); + } } + return status; } struct sn_state { @@ -6337,7 +6346,7 @@ struct sn_state { bool val; }; -static void shortname_list_fn(const char *mnt, struct file_info *finfo, +static NTSTATUS shortname_list_fn(const char *mnt, struct file_info *finfo, const char *name, void *state) { struct sn_state *s = (struct sn_state *)state; @@ -6362,6 +6371,7 @@ static void shortname_list_fn(const char *mnt, struct file_info *finfo, s->val = true; } s->matched += 1; + return NT_STATUS_OK; } static bool run_shortname_test(int dummy) |