On Wed, Aug 21, 2013 at 01:56:31PM +0300, LCD 47 wrote: > On 20 August 2013, David Barnett <daviebd...@gmail.com> wrote: > > Ensure ./foo doesn't exist, and do > > :call mkdir('foo/bar/', 'p') > > > > Vim gives you an error: > > E739: Cannot create directory: foo/bar/ > > but the directory was created just fine. > > > > Dropping the trailing slash works without error: > > :call mkdir('foo/bar', 'p') > > Please try the patch below. It kills the trailing slash, which > seems pretty awkward for a fix.
> diff -r ae6c19fb32e1 src/eval.c > --- a/src/eval.c Wed Aug 14 17:45:29 2013 +0200 > +++ b/src/eval.c Wed Aug 21 13:49:19 2013 +0300 > @@ -14284,6 +14284,7 @@ > typval_T *rettv; > { > char_u *dir; > + char_u *p; > char_u buf[NUMBUFLEN]; > int prot = 0755; > > @@ -14292,6 +14293,13 @@ > return; > > dir = get_tv_string_buf(&argvars[0], buf); > + p = gettail(dir); > + if (!*p) > + { > + p = gettail_sep(dir); > + *p = 0; > + } > + What about :call mkdir('foo/bar//', 'p')? > if (argvars[1].v_type != VAR_UNKNOWN) > { > if (argvars[2].v_type != VAR_UNKNOWN) > @@ -14299,7 +14307,7 @@ > if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0) > mkdir_recurse(dir, prot); > } > - rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : 0; > + rettv->vval.v_number = prot != -1 ? vim_mkdir_emsg(dir, prot) : FAIL; > } > #endif Marius Gedminas -- Hacking graphics in X is like finding sqrt(pi) with roman numerals. -- man xdaliclock
signature.asc
Description: Digital signature