diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-11-02 08:49:23 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2007-12-21 05:44:00 +0100 |
commit | f1374b02eab98fa63d484e39a14a934db4ee0dea (patch) | |
tree | 35e00747b6e75c51c5aea6486112c9cbea9130bc | |
parent | 8fc7df10fb1e3a5fdd6764bc4aea0a661eee7770 (diff) | |
download | samba-f1374b02eab98fa63d484e39a14a934db4ee0dea.tar.gz samba-f1374b02eab98fa63d484e39a14a934db4ee0dea.tar.bz2 samba-f1374b02eab98fa63d484e39a14a934db4ee0dea.zip |
r25790: - remove some nesting by using error and out logic
- print in the print_* function ...
metze
(This used to be commit dbd7e8bcceeecaa650b164990f9874cf3308974e)
-rw-r--r-- | source4/utils/getntacl.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/source4/utils/getntacl.c b/source4/utils/getntacl.c index c3f9332537..18a889a030 100644 --- a/source4/utils/getntacl.c +++ b/source4/utils/getntacl.c @@ -44,16 +44,17 @@ static void ntacl_print_debug_helper(struct ndr_print *ndr, const char *format, free(s); } -static NTSTATUS get_ntacl(char *filename, struct xattr_NTACL **ntacl, +static NTSTATUS get_ntacl(TALLOC_CTX *mem_ctx, + char *filename, + struct xattr_NTACL **ntacl, ssize_t *ntacl_len) { DATA_BLOB blob; ssize_t size; NTSTATUS result; struct ndr_pull *ndr; - struct ndr_print *pr; - *ntacl = talloc(NULL, struct xattr_NTACL); + *ntacl = talloc(mem_ctx, struct xattr_NTACL); size = wrap_getxattr(filename, XATTR_NTACL_NAME, NULL, 0); @@ -74,24 +75,30 @@ static NTSTATUS get_ntacl(char *filename, struct xattr_NTACL **ntacl, result = ndr_pull_xattr_NTACL(ndr, NDR_SCALARS|NDR_BUFFERS, *ntacl); - if (NT_STATUS_IS_OK(result)) { - pr = talloc(*ntacl, struct ndr_print); - pr->print = ntacl_print_debug_helper; - pr->depth = 0; - pr->flags = 0; - - ndr_print_xattr_NTACL(pr, filename, *ntacl); + if (!NT_STATUS_IS_OK(result)) { + return result; } - return result; + return NT_STATUS_OK; } -static void print_ntacl(struct xattr_NTACL *ntacl) +static void print_ntacl(TALLOC_CTX *mem_ctx, + const char *fname, + struct xattr_NTACL *ntacl) { + struct ndr_print *pr; + + pr = talloc_zero(mem_ctx, struct ndr_print); + if (!pr) return; + pr->print = ntacl_print_debug_helper; + + ndr_print_xattr_NTACL(pr, fname, ntacl); + talloc_free(pr); } int main(int argc, char *argv[]) { + NTSTATUS status; struct xattr_NTACL *ntacl; ssize_t ntacl_len; @@ -100,10 +107,15 @@ int main(int argc, char *argv[]) return 1; } + status = get_ntacl(NULL, argv[1], &ntacl, &ntacl_len); + if (!NT_STATUS_IS_OK(status)) { + fprintf(stderr, "get_ntacl failed: %s\n", nt_errstr(status)); + return 1; + } - get_ntacl(argv[1], &ntacl, &ntacl_len); + print_ntacl(ntacl, argv[1], ntacl); - print_ntacl(ntacl); + talloc_free(ntacl); return 0; } |