diff options
-rw-r--r-- | archival/tar.c | 7 | ||||
-rw-r--r-- | tar.c | 7 |
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 | ||
@@ -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 | ||