svn commit: samba r25790 - in branches/SAMBA_4_0/source/utils: .

metze at samba.org metze at samba.org
Fri Nov 2 08:49:23 GMT 2007


Author: metze
Date: 2007-11-02 08:49:23 +0000 (Fri, 02 Nov 2007)
New Revision: 25790

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25790

Log:
- remove some nesting by using error and out logic
- print in the print_* function ...

metze
Modified:
   branches/SAMBA_4_0/source/utils/getntacl.c


Changeset:
Modified: branches/SAMBA_4_0/source/utils/getntacl.c
===================================================================
--- branches/SAMBA_4_0/source/utils/getntacl.c	2007-11-02 08:16:32 UTC (rev 25789)
+++ branches/SAMBA_4_0/source/utils/getntacl.c	2007-11-02 08:49:23 UTC (rev 25790)
@@ -44,16 +44,17 @@
 	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 @@
 
 	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 @@
 		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;
 }



More information about the samba-cvs mailing list