Fix a bug where tar could change perms and ownership of dirs pointed

to by symlink within a tarball.
 -Erik
This commit is contained in:
Erik Andersen
2000-01-23 02:14:20 +00:00
parent de552874d2
commit 06936df164
5 changed files with 47 additions and 26 deletions

View File

@ -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