int pb_mkdir_recursive(const char *dir)
{
struct stat statbuf;
+ int rc, mode = 0755;
char *str, *sep;
- int mode = 0755;
if (!*dir)
return 0;
str = talloc_strdup(NULL, dir);
sep = strchr(*str == '/' ? str + 1 : str, '/');
+ rc = 0;
+
while (1) {
/* terminate the path at sep */
if (mkdir(str, mode) && errno != EEXIST) {
pb_log("mkdir(%s): %s\n", str, strerror(errno));
- return -1;
+ rc = -1;
+ break;
}
if (!sep)
talloc_free(str);
- return 0;
+ return rc;
}
int pb_rmdir_recursive(const char *base, const char *dir)
cur = talloc_strdup(NULL, dir);
- while (strcmp(base, dir)) {
+ while (strcmp(base, cur)) {
- rmdir(dir);
+ rmdir(cur);
/* null-terminate at the last slash */
- pos = strrchr(dir, '/');
+ pos = strrchr(cur, '/');
if (!pos)
break;