On 04/18/2013 10:48 AM, Stéphane Graber wrote:
> On 04/18/2013 10:34 AM, Stéphane Graber wrote:
>> On 04/18/2013 10:32 AM, Stéphane Graber wrote:
>>> 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>
>>
>> Was directly applied to the staging branch as the issue was preventing
>> regular use of LXC.
> 
> Hmm, with the recent round of moderation on the list, it looks like I
> may have applied the wrong version of the patch.
> 
> There's two identically named patch on the ML but with different content.
> I'll test the second one and see if that solves my issues.
> 
> In the future, please include "v2" in the name of the second patch so
> that people trying to figure out what to apply to staging don't get
> confused ;)

Confirmed, the v2 seems fine here. Pushing that to staging.

> 
>>> ---
>>>  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;
>>>  }
>>>


-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
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

Reply via email to