From 06936df16411fff0fdc338cae28385d66cabcef8 Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Sun, 23 Jan 2000 02:14:20 +0000 Subject: Fix a bug where tar could change perms and ownership of dirs pointed to by symlink within a tarball. -Erik --- utility.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'utility.c') diff --git a/utility.c b/utility.c index ade47bd..4b67ce9 100644 --- a/utility.c +++ b/utility.c @@ -495,11 +495,12 @@ recursiveAction(const char *fileName, int recurse, int followLinks, int depthFir * while all previous ones get default protections. Errors are not reported * here, as failures to restore files can be reported later. */ -extern void createPath (const char *name, int mode) +extern int createPath (const char *name, int mode) { char *cp; char *cpOld; char buf[NAME_MAX]; + int retVal=0; strcpy( buf, name); cp = strchr (buf, '/'); @@ -507,9 +508,17 @@ extern void createPath (const char *name, int mode) cpOld = cp; cp = strchr (cp + 1, '/'); *cpOld = '\0'; - mkdir (buf, cp ? 0777 : mode); + retVal = mkdir (buf, cp ? 0777 : mode); *cpOld = '/'; } + /* Return the result from the final directory, as that + * is the one that counts */ + if( retVal!=0) { + if ( errno!=EEXIST) { + return( FALSE); + } + } + return( TRUE); } #endif -- cgit v1.1