X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fmake-file.c;h=9e84306cfb04a36d6482a3f740a03290ac9cd960;hb=7425ac6542200f99857a855c00ee8585077ba6f2;hp=a9e750f95e331ed5db57477bc53673272e2447e6;hpb=be98214655822c442802194b3e374b7a98720ac6;p=pspp diff --git a/src/data/make-file.c b/src/data/make-file.c index a9e750f95e..9e84306cfb 100644 --- a/src/data/make-file.c +++ b/src/data/make-file.c @@ -59,6 +59,7 @@ replace_file_start (const char *file_name, const char *mode, struct stat s; struct replace_file *rf; int fd; + int saved_errno = errno; /* If FILE_NAME represents a special file, write to it directly instead of trying to replace it. */ @@ -68,8 +69,9 @@ replace_file_start (const char *file_name, const char *mode, fd = open (file_name, O_WRONLY); if (fd < 0) { + saved_errno = errno; msg (ME, _("Opening %s for writing: %s."), - file_name, strerror (errno)); + file_name, strerror (saved_errno)); return NULL; } @@ -77,8 +79,9 @@ replace_file_start (const char *file_name, const char *mode, *fp = fdopen (fd, mode); if (*fp == NULL) { - msg (ME, _("Opening stream for %s: %s."), - file_name, strerror (errno)); + saved_errno = errno; + msg (ME, _("Opening stream for %s: %s."), + file_name, strerror (saved_errno)); close (fd); return NULL; } @@ -106,8 +109,9 @@ replace_file_start (const char *file_name, const char *mode, rf->tmp_name = xasprintf ("%s.tmpXXXXXX", file_name); if (gen_tempname (rf->tmp_name, 0, 0600, GT_NOCREATE) < 0) { + saved_errno = errno; msg (ME, _("Creating temporary file to replace %s: %s."), - rf->file_name, strerror (errno)); + rf->file_name, strerror (saved_errno)); goto error; } @@ -117,8 +121,9 @@ replace_file_start (const char *file_name, const char *mode, break; if (errno != EEXIST) { + saved_errno = errno; msg (ME, _("Creating temporary file %s: %s."), - rf->tmp_name, strerror (errno)); + rf->tmp_name, strerror (saved_errno)); goto error; } free (rf->tmp_name); @@ -129,8 +134,9 @@ replace_file_start (const char *file_name, const char *mode, *fp = fdopen (fd, mode); if (*fp == NULL) { + saved_errno = errno; msg (ME, _("Opening stream for temporary file %s: %s."), - rf->tmp_name, strerror (errno)); + rf->tmp_name, strerror (saved_errno)); close (fd); unlink (rf->tmp_name); goto error; @@ -151,6 +157,7 @@ error: *fp = NULL; if (tmp_name != NULL) *tmp_name = NULL; + errno = saved_errno; return NULL; } @@ -228,7 +235,6 @@ unlink_replace_files (void) /* We don't free_replace_file(RF) because calling free is unsafe from an asynchronous signal handler. */ unlink (rf->tmp_name); - fflush (stdout); } unblock_fatal_signals (); }