From: Eric Andersen Date: Mon, 4 Jun 2001 16:54:39 +0000 (-0000) Subject: Revert the patch from Konstantin Boldyshev to never X-Git-Tag: 0_52~116 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cb2a372c9f7931d05d3f9d5caac82426f60a48b5;p=oweals%2Fbusybox.git Revert the patch from Konstantin Boldyshev to never change permissions on existing directories. This behavior is contrary to SUSv2 and contrary to GNU tar. Thanks to Matt Kraai for pointing this out. I should have been much more careful about accepting such a patch. -Erik --- diff --git a/archival/tar.c b/archival/tar.c index 9e1270cca..f31859e33 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -382,8 +382,6 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag) static int tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag) { - int result; - if (extractFlag==FALSE || tostdoutFlag==TRUE) return( TRUE); @@ -394,15 +392,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag) /* make the final component, just in case it was * omitted by create_path() (which will skip the * directory if it doesn't have a terminating '/') */ - result = mkdir(header->name, header->mode); - /* Don't fix permissions on pre-existing directories */ - if (result == 0) { - fixUpPermissions(header); - } else if (result < 0 && errno != EEXIST) { + if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) { perror_msg("%s", header->name); return FALSE; } + fixUpPermissions(header); return( TRUE); } diff --git a/tar.c b/tar.c index 9e1270cca..f31859e33 100644 --- a/tar.c +++ b/tar.c @@ -382,8 +382,6 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag) static int tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag) { - int result; - if (extractFlag==FALSE || tostdoutFlag==TRUE) return( TRUE); @@ -394,15 +392,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag) /* make the final component, just in case it was * omitted by create_path() (which will skip the * directory if it doesn't have a terminating '/') */ - result = mkdir(header->name, header->mode); - /* Don't fix permissions on pre-existing directories */ - if (result == 0) { - fixUpPermissions(header); - } else if (result < 0 && errno != EEXIST) { + if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) { perror_msg("%s", header->name); return FALSE; } + fixUpPermissions(header); return( TRUE); }