X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Fsystem%2Fsystem.c;h=917d44447532361218eb8939b6870edc9a46a16e;hp=6e80b24ec1eaac9176629af6799f292546c668a1;hb=072847109936bc0e822f8cf67c31eb62183f0db8;hpb=51c6aaf7864eb65779d548ee2549caa357f71e2c diff --git a/lib/system/system.c b/lib/system/system.c index 6e80b24..917d444 100644 --- a/lib/system/system.c +++ b/lib/system/system.c @@ -30,11 +30,17 @@ const struct pb_system_apps pb_system_apps = { .udhcpc = HOST_PROG_UDHCPC, }; +#ifndef TFTP_TYPE +#define TFTP_TYPE TFTP_TYPE_UNKNOWN +#endif + +enum tftp_type tftp_type = TFTP_TYPE; + int pb_mkdir_recursive(const char *dir) { struct stat statbuf; + int rc, mode = 0755; char *str, *sep; - int mode = 0755; if (!*dir) return 0; @@ -51,6 +57,8 @@ int pb_mkdir_recursive(const char *dir) str = talloc_strdup(NULL, dir); sep = strchr(*str == '/' ? str + 1 : str, '/'); + rc = 0; + while (1) { /* terminate the path at sep */ @@ -59,7 +67,8 @@ int pb_mkdir_recursive(const char *dir) if (mkdir(str, mode) && errno != EEXIST) { pb_log("mkdir(%s): %s\n", str, strerror(errno)); - return -1; + rc = -1; + break; } if (!sep) @@ -72,7 +81,7 @@ int pb_mkdir_recursive(const char *dir) talloc_free(str); - return 0; + return rc; } int pb_rmdir_recursive(const char *base, const char *dir) @@ -85,12 +94,12 @@ 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;