diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-15 21:41:56 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-15 21:41:56 +0200 |
commit | fdcbe3c3fedf48a43b22938c9331addb2f1182f1 (patch) | |
tree | a8d1f55af507815b74ffc445467610ac2efe13d6 | |
parent | ab176ce982ac67f7cfcfa1fa885f9117ef8bbafe (diff) | |
download | vim-git-fdcbe3c3fedf48a43b22938c9331addb2f1182f1.tar.gz |
patch 8.2.0985: simplify() does not remove slashes from "///path"v8.2.0985
Problem: Simplify() does not remove slashes from "///path".
Solution: Reduce > 2 slashes to one. (closes #6263)
-rw-r--r-- | src/findfile.c | 8 | ||||
-rw-r--r-- | src/testdir/test_functions.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/findfile.c b/src/findfile.c index 2139d8bae..b153ed010 100644 --- a/src/findfile.c +++ b/src/findfile.c @@ -2641,6 +2641,14 @@ simplify_filename(char_u *filename) while (vim_ispathsep(*p)); } start = p; // remember start after "c:/" or "/" or "///" +#ifdef UNIX + // Posix says that "//path" is unchanged but "///path" is "/path". + if (start > filename + 2) + { + STRMOVE(filename + 1, p); + start = p = filename + 1; + } +#endif do { diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 0a4e94e0a..aad5a8ce9 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -463,6 +463,10 @@ func Test_simplify() call assert_equal('/', simplify('/.')) call assert_equal('/', simplify('/..')) call assert_equal('/...', simplify('/...')) + call assert_equal('//path', simplify('//path')) + call assert_equal('/path', simplify('///path')) + call assert_equal('/path', simplify('////path')) + call assert_equal('./dir/file', './dir/file'->simplify()) call assert_equal('./dir/file', simplify('.///dir//file')) call assert_equal('./dir/file', simplify('./dir/./file')) @@ -1355,6 +1359,7 @@ endfunc " Test for the inputdialog() function func Test_inputdialog() + set timeout timeoutlen=10 if has('gui_running') call assert_fails('let v=inputdialog([], "xx")', 'E730:') call assert_fails('let v=inputdialog("Q", [])', 'E730:') @@ -1364,6 +1369,7 @@ func Test_inputdialog() call feedkeys(":let v=inputdialog('Q:', 'xx', 'yy')\<CR>\<Esc>", 'xt') call assert_equal('yy', v) endif + set timeout& timeoutlen& endfunc " Test for inputlist() @@ -1916,7 +1922,7 @@ func Test_readdirex() \ ->map({-> v:val.name}) call sort(files)->assert_equal(['bar.txt', 'dir', 'foo.txt']) - " report brocken link correctly + " report broken link correctly if has("unix") call writefile([], 'Xdir/abc.txt') call system("ln -s Xdir/abc.txt Xdir/link") diff --git a/src/version.c b/src/version.c index 91ae5ea1a..e8a8b335a 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 985, +/**/ 984, /**/ 983, |