diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-06-04 16:54:39 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-06-04 16:54:39 +0000 |
commit | cb2a372c9f7931d05d3f9d5caac82426f60a48b5 (patch) | |
tree | 17c684a4f3a042a980cf55b218ab017868a3d40a | |
parent | 67a464033345d0fcabfda06ed5d4532da6702ecf (diff) | |
download | busybox-cb2a372c9f7931d05d3f9d5caac82426f60a48b5.tar.gz |
Revert the patch from Konstantin Boldyshev <konst@linuxassembly.org> 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
-rw-r--r-- | archival/tar.c | 9 | ||||
-rw-r--r-- | tar.c | 9 |
2 files changed, 4 insertions, 14 deletions
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); } @@ -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); } |