소스 검색

(set_stat): Remove duplicate code.

Paul Eggert 25 년 전
부모
커밋
7be178a4d4
1개의 변경된 파일8개의 추가작업 그리고 23개의 파일을 삭제
  1. 8 23
      src/extract.c

+ 8 - 23
src/extract.c

@@ -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);
+	}
     }
 }