From 541ffe30a279823c38b745c5e8c4971cb4a6cc41 Mon Sep 17 00:00:00 2001
From: Matt Kraai <kraai@debian.org>
Date: Sat, 13 Jan 2001 21:46:25 +0000
Subject: Fix ownership of extracted directories.

---
 archival/tar.c | 7 +++++--
 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)
 	/* 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 '/') */
-	if (mkdir(header->name, header->mode) == 0) {
-		fixUpPermissions(header);
+	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 9a3cff361..844559580 100644
--- a/tar.c
+++ b/tar.c
@@ -426,9 +426,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 '/') */
-	if (mkdir(header->name, header->mode) == 0) {
-		fixUpPermissions(header);
+	if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) {
+		perror_msg("%s", header->name);
+		return FALSE;
 	}
+
+	fixUpPermissions(header);
 	return( TRUE);
 }
 
-- 
cgit v1.2.3