summaryrefslogtreecommitdiff
path: root/utility.c
diff options
context:
space:
mode:
Diffstat (limited to 'utility.c')
-rw-r--r--utility.c13
1 files changed, 11 insertions, 2 deletions
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