Skip to content

Commit

Permalink
updated for version 7.3.1297
Browse files Browse the repository at this point in the history
Problem:    findfile() directory matching does not work when a star follows
            text. (Markus Braun)
Solution:   Make a wildcard work properly. (Christian Brabandt)
  • Loading branch information
brammool committed Jul 3, 2013
1 parent 8968a31 commit f4c5fcb
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 5 deletions.
54 changes: 52 additions & 2 deletions src/misc2.c
Expand Up @@ -4679,8 +4679,58 @@ vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
}
STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir);
add_pathsep(ff_expand_buffer);
STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
add_pathsep(ff_expand_buffer);
{
char_u *buf = alloc(STRLEN(ff_expand_buffer)
+ STRLEN(search_ctx->ffsc_fix_path));

STRCPY(buf, ff_expand_buffer);
STRCAT(buf, search_ctx->ffsc_fix_path);
if (mch_isdir(buf))
{
STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
add_pathsep(ff_expand_buffer);
}
#ifdef FEAT_PATH_EXTRA
else
{
char_u *p = vim_strrchr(search_ctx->ffsc_fix_path, PATHSEP);
char_u *wc_path = NUL;
char_u *temp = NUL;
int len = 0;

if (p != NULL)
{
len = p - search_ctx->ffsc_fix_path;
STRNCAT(ff_expand_buffer, search_ctx->ffsc_fix_path, len);
add_pathsep(ff_expand_buffer);
}
else
len = STRLEN(search_ctx->ffsc_fix_path);

if (search_ctx->ffsc_wc_path != NULL)
{
wc_path = vim_strsave(search_ctx->ffsc_wc_path);
temp = alloc(STRLEN(search_ctx->ffsc_wc_path)
+ (STRLEN(search_ctx->ffsc_fix_path) - len));
}

if (temp == NULL || wc_path == NULL)
{
vim_free(buf);
vim_free(temp);
vim_free(wc_path);
goto error_return;
}

STRCPY(temp, search_ctx->ffsc_fix_path + len);
STRCAT(temp, search_ctx->ffsc_wc_path);
vim_free(search_ctx->ffsc_wc_path);
vim_free(wc_path);
search_ctx->ffsc_wc_path = temp;
}
#endif
vim_free(buf);
}

sptr = ff_create_stack_element(ff_expand_buffer,
#ifdef FEAT_PATH_EXTRA
Expand Down
18 changes: 15 additions & 3 deletions src/testdir/test89.in
@@ -1,6 +1,7 @@
Some tests for setting 'number' and 'relativenumber'
This is not all that useful now that the options are no longer reset when
setting the other.
- Some tests for setting 'number' and 'relativenumber'
This is not all that useful now that the options are no longer reset when
setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
Expand Down Expand Up @@ -49,6 +50,17 @@ STARTTEST
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ../..
:$put =''
:$put ='Testing findfile'
:$put =''
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST
Expand Down
6 changes: 6 additions & 0 deletions src/testdir/test89.ok
Expand Up @@ -20,3 +20,9 @@ results:
number

relativenumber

Testing findfile

src/testdir/test19.in
testdir/test19.in
testdir/test19.in
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -728,6 +728,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1297,
/**/
1296,
/**/
Expand Down

0 comments on commit f4c5fcb

Please sign in to comment.