diff options
Diffstat (limited to 'scheduler/file.c')
-rw-r--r-- | scheduler/file.c | 27 |
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 $". */ |