* lib/commonio.c: Call fsync before closing the backup file. This
ensures that the backup file is flushed to the storage medium.
+ * src/useradd.c: Likewise for the default file, faillog, lastlog,
+ and mail spool.
2009-03-15 Nicolas François <nicolas.francois@centraliens.net>
* the new file is intact.
*/
(void) fflush (ofp);
- if ((ferror (ofp) != 0) || (fclose (ofp) != 0)) {
+ if ( (ferror (ofp) != 0)
+ || (fsync (fileno (ofp)) != 0)
+ || (fclose (ofp) != 0)) {
unlink (new_file);
return -1;
}
if ( (-1 == fd)
|| (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
|| (write (fd, &fl, sizeof (fl)) != (ssize_t) sizeof (fl))
+ || (fsync (fd) != 0)
|| (close (fd) != 0)) {
fprintf (stderr,
_("%s: failed to reset the faillog entry of UID %lu: %s\n"),
if ( (-1 == fd)
|| (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
|| (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll))
+ || (fsync (fd) != 0)
|| (close (fd) != 0)) {
fprintf (stderr,
_("%s: failed to reset the lastlog entry of UID %lu: %s\n"),
perror (_("Setting mailbox file permissions"));
}
+ fsync (fd);
close (fd);
}
}