summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-15 21:41:56 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-15 21:41:56 +0200
commitfdcbe3c3fedf48a43b22938c9331addb2f1182f1 (patch)
treea8d1f55af507815b74ffc445467610ac2efe13d6
parentab176ce982ac67f7cfcfa1fa885f9117ef8bbafe (diff)
downloadvim-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.c8
-rw-r--r--src/testdir/test_functions.vim8
-rw-r--r--src/version.c2
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,