]> Dogcows Code - chaz/tar/commitdiff
(set_stat): Remove duplicate code.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 7 Nov 1999 21:06:38 +0000 (21:06 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 7 Nov 1999 21:06:38 +0000 (21:06 +0000)
src/extract.c

index aa699805eee3d0e68d0dd698bba4038b267df452..0aba5e7fa0af2ecf7d812332196a54fc875d0efe 100644 (file)
@@ -155,8 +155,6 @@ set_stat (char *file_name, struct stat *stat_info, int symlink_flag)
 
   if (0 < same_owner_option)
     {
-#if HAVE_LCHOWN
-
       /* When lchown exists, it should be used to change the attributes of
         the symbolic link itself.  In this case, a mere chown would change
         the attributes of the file the symbolic link is pointing to, and
@@ -164,11 +162,13 @@ set_stat (char *file_name, struct stat *stat_info, int symlink_flag)
 
       if (symlink_flag)
        {
+#if HAVE_LCHOWN
          if (lchown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
            ERROR ((0, errno, _("%s: Cannot lchown to uid %lu gid %lu"),
                    file_name,
                    (unsigned long) stat_info->st_uid,
                    (unsigned long) stat_info->st_gid));
+#endif
        }
       else
        {
@@ -177,28 +177,13 @@ set_stat (char *file_name, struct stat *stat_info, int symlink_flag)
                    file_name,
                    (unsigned long) stat_info->st_uid,
                    (unsigned long) stat_info->st_gid));
-       }
-
-#else /* not HAVE_LCHOWN */
 
-      if (!symlink_flag)
-
-       if (chown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
-         ERROR ((0, errno, _("%s: Cannot chown to uid %lu gid %lu"),
-                 file_name,
-                 (unsigned long) stat_info->st_uid,
-                 (unsigned long) stat_info->st_gid));
-
-#endif/* not HAVE_LCHOWN */
-
-      if (!symlink_flag)
-
-       /* On a few systems, and in particular, those allowing to give files
-          away, changing the owner or group destroys the suid or sgid bits.
-          So let's attempt setting these bits once more.  */
-
-       if (stat_info->st_mode & (S_ISUID | S_ISGID | S_ISVTX))
-         set_mode (file_name, stat_info);
+         /* On a few systems, and in particular, those allowing to give files
+            away, changing the owner or group destroys the suid or sgid bits.
+            So let's attempt setting these bits once more.  */
+         if (stat_info->st_mode & (S_ISUID | S_ISGID | S_ISVTX))
+           set_mode (file_name, stat_info);
+       }
     }
 }
 
This page took 0.030051 seconds and 4 git commands to generate.