(change_file_mode): Save errno from a possibly failed chown,
authorJim Meyering <jim@meyering.net>
Tue, 25 Jul 2000 22:22:52 +0000 (22:22 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 25 Jul 2000 22:22:52 +0000 (22:22 +0000)
and use that later.  Otherwise, errno itself could be clobbered before used.

src/chmod.c

index 41c5388733c726c8f5bd7157964cf69e5ffd87e9..f958e962a6af7c15a2b193e37b6a9af0f66fead5 100644 (file)
@@ -162,6 +162,7 @@ change_file_mode (const char *file, const struct mode_change *changes,
   if (newmode != (file_stats.st_mode & CHMOD_MODE_BITS))
     {
       int fail = chmod (file, newmode);
+      int saved_errno = errno;
 
       if (verbosity == V_high || (verbosity == V_changes_only && !fail))
        describe_change (file, newmode, (fail ? CH_FAILED : CH_SUCCEEDED));
@@ -169,7 +170,7 @@ change_file_mode (const char *file, const struct mode_change *changes,
       if (fail)
        {
          if (force_silent == 0)
-           error (0, errno, "%s", file);
+           error (0, saved_errno, "%s", file);
          errors = 1;
        }
     }