aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-01-13 21:46:25 +0000
committerMatt Kraai <kraai@debian.org>2001-01-13 21:46:25 +0000
commit541ffe30a279823c38b745c5e8c4971cb4a6cc41 (patch)
tree8a6e36ab55776b9354e1bfc869e24befb5ccfa21
parent55787401ea16629070a35f6d46235e648f730870 (diff)
downloadbusybox-w32-541ffe30a279823c38b745c5e8c4971cb4a6cc41.tar.gz
busybox-w32-541ffe30a279823c38b745c5e8c4971cb4a6cc41.tar.bz2
busybox-w32-541ffe30a279823c38b745c5e8c4971cb4a6cc41.zip
Fix ownership of extracted directories.
-rw-r--r--archival/tar.c7
-rw-r--r--tar.c7
2 files changed, 10 insertions, 4 deletions
diff --git a/archival/tar.c b/archival/tar.c
index 9a3cff361..844559580 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -426,9 +426,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
426 /* make the final component, just in case it was 426 /* make the final component, just in case it was
427 * omitted by create_path() (which will skip the 427 * omitted by create_path() (which will skip the
428 * directory if it doesn't have a terminating '/') */ 428 * directory if it doesn't have a terminating '/') */
429 if (mkdir(header->name, header->mode) == 0) { 429 if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) {
430 fixUpPermissions(header); 430 perror_msg("%s", header->name);
431 return FALSE;
431 } 432 }
433
434 fixUpPermissions(header);
432 return( TRUE); 435 return( TRUE);
433} 436}
434 437
diff --git a/tar.c b/tar.c
index 9a3cff361..844559580 100644
--- a/tar.c
+++ b/tar.c
@@ -426,9 +426,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
426 /* make the final component, just in case it was 426 /* make the final component, just in case it was
427 * omitted by create_path() (which will skip the 427 * omitted by create_path() (which will skip the
428 * directory if it doesn't have a terminating '/') */ 428 * directory if it doesn't have a terminating '/') */
429 if (mkdir(header->name, header->mode) == 0) { 429 if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) {
430 fixUpPermissions(header); 430 perror_msg("%s", header->name);
431 return FALSE;
431 } 432 }
433
434 fixUpPermissions(header);
432 return( TRUE); 435 return( TRUE);
433} 436}
434 437