summaryrefslogtreecommitdiff
path: root/scheduler/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'scheduler/file.c')
-rw-r--r--scheduler/file.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/scheduler/file.c b/scheduler/file.c
index 75df6a18..1d252905 100644
--- a/scheduler/file.c
+++ b/scheduler/file.c
@@ -1,5 +1,5 @@
/*
- * "$Id: file.c 4216 2013-03-11 13:57:36Z msweet $"
+ * "$Id: file.c 11201 2013-07-26 21:27:27Z msweet $"
*
* File functions for the CUPS scheduler.
*
@@ -109,6 +109,29 @@ cupsdCloseCreatedConfFile(
/*
+ * Synchronize changes to disk if SyncOnClose is enabled.
+ */
+
+ if (SyncOnClose)
+ {
+ if (cupsFileFlush(fp))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to write changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+
+ if (fsync(cupsFileNumber(fp)))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to sync changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+ }
+
+ /*
* First close the file...
*/
@@ -438,5 +461,5 @@ overwrite_data(int fd, /* I - File descriptor */
/*
- * End of "$Id: file.c 4216 2013-03-11 13:57:36Z msweet $".
+ * End of "$Id: file.c 11201 2013-07-26 21:27:27Z msweet $".
*/