1 #include "compat.h" 2 #include "backuppcd-common.h" 3 4 int backuppc_mkdir(const char *dir) { 5 char *dircpy, *tmp;; 6 int retval; 7 8 #ifdef MKDIR_TAKES_ONE_ARG 9 if (mkdir(dir) < 0) { 10 #else 11 if (mkdir(dir, 0700) < 0) { 12 #endif 13 dircpy = strdup(dir); 14 15 tmp = dircpy; 16 17 while (1) { 18 tmp = strchr(tmp + 1, '/'); 19 if (!tmp) { 20 break; 21 } 22 23 *tmp = '\0'; 24 #ifdef MKDIR_TAKES_ONE_ARG 25 mkdir(dircpy); 26 #else 27 mkdir(dircpy, 0700); 28 #endif 29 *tmp = '/'; 30 } 31 32 free(dircpy); 33 34 #ifdef MKDIR_TAKES_ONE_ARG 35 retval = mkdir(dir); 36 #else 37 retval = mkdir(dir, 0700); 38 #endif 39 } else { 40 retval = 0; 41 } 42 43 return(retval); 44 } |