svn commit: samba r14681 - branches/SAMBA_3_0/source/utils trunk/source/utils

jmcd at samba.org jmcd at samba.org
Thu Mar 23 16:39:38 GMT 2006


Author: jmcd
Date: 2006-03-23 16:39:37 +0000 (Thu, 23 Mar 2006)
New Revision: 14681

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

Log:
Get rid of hardcoded /tmp/add.ldif and /tmp/mod.ldif files.  Is there a
different directory the temp files should be in, or is /tmp ok?

Still have to get rid of the output file hardcoding, but that is to
come, because I need to cleanup stdout.


Modified:
   branches/SAMBA_3_0/source/utils/net_rpc_samsync.c
   trunk/source/utils/net_rpc_samsync.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/net_rpc_samsync.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_rpc_samsync.c	2006-03-23 15:03:52 UTC (rev 14680)
+++ branches/SAMBA_3_0/source/utils/net_rpc_samsync.c	2006-03-23 16:39:37 UTC (rev 14681)
@@ -1719,7 +1719,9 @@
 {
 	char *suffix;
 	const char *builtin_sid = "S-1-5-32";
-	char *ldif_file;
+	char *ldif_file, *add_ldif, *mod_ldif;
+	const char *add_template = "/tmp/add.ldif.XXXXXX";
+	const char *mod_template = "/tmp/mod.ldif.XXXXXX";
 	fstring sid, domainname;
 	uint32 sync_context = 0;
 	NTSTATUS ret = NT_STATUS_OK, result;
@@ -1728,7 +1730,6 @@
 	SAM_DELTA_HDR *hdr_deltas;
 	SAM_DELTA_CTR *deltas;
 	uint32 num_deltas;
-	const char *add_ldif = "/tmp/add.ldif", *mod_ldif = "/tmp/mod.ldif";
 	FILE *add_fd = NULL, *mod_fd = NULL, *ldif_fd = NULL;
 	char sys_cmd[1024];
 	int num_alloced = 0, g_index = 0, a_index = 0, sys_cmd_result;
@@ -1751,18 +1752,20 @@
 	else
 		ldif_file = talloc_strdup(mem_ctx, "/tmp/tmp.ldif");
 	
-	if (ldif_file == NULL) {
+	add_ldif = talloc_strdup(mem_ctx, add_template);
+	mod_ldif = talloc_strdup(mem_ctx, mod_template);
+ 	if (!ldif_file || !add_ldif || !mod_ldif) {
 		ret = NT_STATUS_NO_MEMORY;
 		goto done;
 	}
 
 	/* Open the add and mod ldif files */
-	if (!(add_fd = fopen(add_ldif, "a"))) {
+	if (!(add_fd = fdopen(smb_mkstemp(add_ldif),"w"))) {
 		DEBUG(1, ("Could not open %s\n", add_ldif));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
-	if (!(mod_fd = fopen(mod_ldif, "a"))) {
+	if (!(mod_fd = fdopen(smb_mkstemp(mod_ldif),"w"))) {
 		DEBUG(1, ("Could not open %s\n", mod_ldif));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
@@ -1993,20 +1996,22 @@
 		goto done;
 	}
 
-	/* Delete the temporary ldif files */
-	if (unlink(add_ldif))
-		d_fprintf(stderr, "unlink(%s) failed, error was (%s)\n",
-			  add_ldif, strerror(errno));
-	if (unlink(mod_ldif))
-		d_fprintf(stderr, "unlink(%s) failed, error was (%s)\n",
-			  mod_ldif, strerror(errno));
-
   done:
-	/* Close the ldif files */
+	/* Close and delete the ldif files */
 	if (add_fd)
 		fclose(add_fd);
+	if (strcmp(add_ldif, add_template) && (unlink(add_ldif))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 add_ldif, strerror(errno)));
+	}
+
 	if (mod_fd)
 		fclose(mod_fd);
+	if (strcmp(mod_ldif, mod_template) && (unlink(mod_ldif))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 mod_ldif, strerror(errno)));
+	}
+	
 	if (ldif_fd)
 		fclose(ldif_fd);
 

Modified: trunk/source/utils/net_rpc_samsync.c
===================================================================
--- trunk/source/utils/net_rpc_samsync.c	2006-03-23 15:03:52 UTC (rev 14680)
+++ trunk/source/utils/net_rpc_samsync.c	2006-03-23 16:39:37 UTC (rev 14681)
@@ -1719,7 +1719,9 @@
 {
 	char *suffix;
 	const char *builtin_sid = "S-1-5-32";
-	char *ldif_file;
+	char *ldif_file, *add_ldif, *mod_ldif;
+	const char *add_template = "/tmp/add.ldif.XXXXXX";
+	const char *mod_template = "/tmp/mod.ldif.XXXXXX";
 	fstring sid, domainname;
 	uint32 sync_context = 0;
 	NTSTATUS ret = NT_STATUS_OK, result;
@@ -1728,7 +1730,6 @@
 	SAM_DELTA_HDR *hdr_deltas;
 	SAM_DELTA_CTR *deltas;
 	uint32 num_deltas;
-	const char *add_ldif = "/tmp/add.ldif", *mod_ldif = "/tmp/mod.ldif";
 	FILE *add_fd = NULL, *mod_fd = NULL, *ldif_fd = NULL;
 	char sys_cmd[1024];
 	int num_alloced = 0, g_index = 0, a_index = 0, sys_cmd_result;
@@ -1751,18 +1752,20 @@
 	else
 		ldif_file = talloc_strdup(mem_ctx, "/tmp/tmp.ldif");
 	
-	if (ldif_file == NULL) {
+	add_ldif = talloc_strdup(mem_ctx, add_template);
+	mod_ldif = talloc_strdup(mem_ctx, mod_template);
+ 	if (!ldif_file || !add_ldif || !mod_ldif) {
 		ret = NT_STATUS_NO_MEMORY;
 		goto done;
 	}
 
 	/* Open the add and mod ldif files */
-	if (!(add_fd = fopen(add_ldif, "a"))) {
+	if (!(add_fd = fdopen(smb_mkstemp(add_ldif),"w"))) {
 		DEBUG(1, ("Could not open %s\n", add_ldif));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
 	}
-	if (!(mod_fd = fopen(mod_ldif, "a"))) {
+	if (!(mod_fd = fdopen(smb_mkstemp(mod_ldif),"w"))) {
 		DEBUG(1, ("Could not open %s\n", mod_ldif));
 		ret = NT_STATUS_UNSUCCESSFUL;
 		goto done;
@@ -1993,20 +1996,22 @@
 		goto done;
 	}
 
-	/* Delete the temporary ldif files */
-	if (unlink(add_ldif))
-		d_fprintf(stderr, "unlink(%s) failed, error was (%s)\n",
-			  add_ldif, strerror(errno));
-	if (unlink(mod_ldif))
-		d_fprintf(stderr, "unlink(%s) failed, error was (%s)\n",
-			  mod_ldif, strerror(errno));
-
   done:
-	/* Close the ldif files */
+	/* Close and delete the ldif files */
 	if (add_fd)
 		fclose(add_fd);
+	if (strcmp(add_ldif, add_template) && (unlink(add_ldif))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 add_ldif, strerror(errno)));
+	}
+
 	if (mod_fd)
 		fclose(mod_fd);
+	if (strcmp(mod_ldif, mod_template) && (unlink(mod_ldif))) {
+		DEBUG(1,("unlink(%s) failed, error was (%s)\n",
+			 mod_ldif, strerror(errno)));
+	}
+	
 	if (ldif_fd)
 		fclose(ldif_fd);
 



More information about the samba-cvs mailing list