summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2008-08-08 10:59:17 +0000
committervimboss <devnull@localhost>2008-08-08 10:59:17 +0000
commit34633e8c75919f4230e0905370e8eb74c80d8d6a (patch)
tree4bab71d94c65884f78990dceaa26e773ac36176a
parent3d2a8ea9aedd94323d1264b2317822dc2fbf3feb (diff)
downloadvim-7.2c.002.tar.gz
updated for version 7.2c-002v7.2c.002v7-2c-002
-rw-r--r--runtime/doc/eval.txt6
-rw-r--r--src/ex_getln.c10
-rw-r--r--src/version.c2
3 files changed, 14 insertions, 4 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 8bb990a0..3e24133c 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 c9760d1d..994fe2aa 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 c8565c44..6730cc0f 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