[asterisk-commits] mmichelson: branch 1.4 r139769 - /branches/1.4/main/config.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Aug 25 10:52:59 CDT 2008


Author: mmichelson
Date: Mon Aug 25 10:52:59 2008
New Revision: 139769

URL: http://svn.digium.com/view/asterisk?view=rev&rev=139769
Log:
Fix the logic in config_text_file_save so that if an
UpdateConfig manager action is issued and the
file specified in DstFileName does not yet exist,
an error is not returned.

(closes issue #13341)
Reported by: vadim
Patches:
      13341.patch uploaded by putnopvut (license 60)
	  (with small modification from seanbright)


Modified:
    branches/1.4/main/config.c

Modified: branches/1.4/main/config.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/config.c?view=diff&rev=139769&r1=139768&r2=139769
==============================================================================
--- branches/1.4/main/config.c (original)
+++ branches/1.4/main/config.c Mon Aug 25 10:52:59 2008
@@ -1013,6 +1013,7 @@
 	struct ast_comment *cmt;
 	struct stat s;
 	int blanklines = 0;
+	int stat_result = 0;
 
 	if (configfile[0] == '/') {
 		snprintf(fntmp, sizeof(fntmp), "%s.XXXXXX", configfile);
@@ -1124,10 +1125,11 @@
 			close(fd);
 		return -1;
 	}
-	stat(fn, &s);
-	fchmod(fd, s.st_mode);
+	if (!(stat_result = stat(fn, &s))) {
+		fchmod(fd, s.st_mode);
+	}
 	fclose(f);
-	if (unlink(fn) || link(fntmp, fn)) {
+	if ((!stat_result && unlink(fn)) || link(fntmp, fn)) {
 		if (option_debug)
 			ast_log(LOG_DEBUG, "Unable to open for writing: %s (%s)\n", fn, strerror(errno));
 		if (option_verbose > 1)




More information about the asterisk-commits mailing list