This reverts commit 8de4140644f01180f2fdab55b0ab0f13d1c761c6. This commit was preventing container startup on my machine, making them all fail with various "No such file or directory" errors.
Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- src/lxc/utils.c | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 9794553..e07ca7b 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -95,25 +95,39 @@ extern int get_u16(unsigned short *val, const char *arg, int base) return 0; } +static int is_all_slashes(char *path) +{ + while (*path && *path == '/') + path++; + if (*path) + return 0; + return 1; +} + extern int mkdir_p(char *dir, mode_t mode) { - char *tmp = dir; - char *orig = dir; - char *makeme; - - do { - dir = tmp + strspn(tmp, "/"); - tmp = dir + strcspn(dir, "/"); - makeme = strndupa(orig, dir - orig); - if (*makeme) { - if (!access(makeme, F_OK)) - return 0; - if (mkdir(makeme, mode)) { - SYSERROR("failed to create directory '%s'\n", makeme); - return -1; - } - } - } while(tmp != dir); + int ret; + char *d; + + if (is_all_slashes(dir)) + return 0; + + d = strdup(dir); + if (!d) + return -1; + + ret = mkdir_p(dirname(d), mode); + free(d); + if (ret) + return -1; + + if (!access(dir, F_OK)) + return 0; + + if (mkdir(dir, mode)) { + SYSERROR("failed to create directory '%s'\n", dir); + return -1; + } return 0; } -- 1.8.1.2 ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel