[SCM] Vim packaging branch, upstream, updated. upstream/7.2c.000-4-g8d10f9c

James Vega jamessan at debian.org
Sun Aug 10 01:35:28 UTC 2008


The following commit has been merged in the upstream branch:
commit 7d6eb3869529ed5ede1087b4bf1c881bea7a7785
Author: Bram Moolenaar <Bram at moolenaar.net>
Date:   Sat Aug 9 21:19:33 2008 -0400

    [7.2c.002]
    Patch 7.2c.002
    Problem:    fnameescape() doesn't handle a leading '+' or '>'. (Jan Minar)
    Solution:   Escape a leading '+' and '>'.  And a single '-'.

diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 8bb990a..3e24133 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2832,11 +2832,13 @@ fnameescape({string})					*fnameescape()*
 		For most systems the characters escaped are
 		" \t\n*?[{`$\\%#'\"|!<".  For systems where a backslash
 		appears in a filename, it depends on the value of 'isfname'.
+		A leading '+' and '>' is also escaped (special after |:edit|
+		and |:write|).  And a "-" by itself (special after |:cd|).
 		Example: >
-			:let fname = 'some str%nge|name'
+			:let fname = '+some str%nge|name'
 			:exe "edit " . fnameescape(fname)
 <		results in executing: >
-			edit some\ str\%nge\|name
+			edit \+some\ str\%nge\|name
 
 fnamemodify({fname}, {mods})				*fnamemodify()*
 		Modify file name {fname} according to {mods}.  {mods} is a
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c9760d1..994fe2a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3717,7 +3717,7 @@ vim_strsave_fnameescape(fname, shell)
 	if ((*p != '[' && *p != '{') || !vim_isfilec(*p))
 	    buf[j++] = *p;
     buf[j] = NUL;
-    return vim_strsave_escaped(fname, buf);
+    p = vim_strsave_escaped(fname, buf);
 #else
     p = vim_strsave_escaped(fname, shell ? SHELL_ESC_CHARS : PATH_ESC_CHARS);
     if (shell && csh_like_shell() && p != NULL)
@@ -3730,8 +3730,14 @@ vim_strsave_fnameescape(fname, shell)
 	vim_free(p);
 	p = s;
     }
-    return p;
 #endif
+
+    /* '>' and '+' are special at the start of some commands, e.g. ":edit" and
+     * ":write".  "cd -" has a special meaning. */
+    if (*p == '>' || *p == '+' || (*p == '-' && p[1] == NUL))
+	escape_fname(&p);
+
+    return p;
 }
 
 /*
diff --git a/src/version.c b/src/version.c
index c8565c4..6730cc0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2,
+/**/
     1,
 /**/
     0

-- 
Vim packaging



More information about the pkg-vim-maintainers mailing list