diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-08-05 23:09:31 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-08-05 23:09:31 +0200 |
commit | 39d21e3c30f3391f3b27f5ddb7e1ad411bdb8f2e (patch) | |
tree | 29d41909c26a62bf0c5aa00622ecbf08babff34d | |
parent | 0af2d32c21d48d450a7a1277b2029b9eeed6bebf (diff) | |
download | vim-git-39d21e3c30f3391f3b27f5ddb7e1ad411bdb8f2e.tar.gz |
patch 8.0.0876: backslashes and wildcards in backticks don't workv8.0.0876
Problem: MS-Windows: Backslashes and wildcards in backticks don't work.
Solution: Do not handle backslashes inside backticks in the wrong place.
(Yasuhiro Matsumoto, closes #1942)
-rw-r--r-- | src/os_mswin.c | 9 | ||||
-rw-r--r-- | src/os_win32.c | 12 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/os_mswin.c b/src/os_mswin.c index dd4201222..374a2399c 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -450,6 +450,15 @@ slash_adjust(char_u *p) { if (path_with_url(p)) return; + + if (*p == '`') + { + /* don't replace backslash in backtick quoted strings */ + int len = STRLEN(p); + if (len > 2 && *(p + len - 1) == '`') + return; + } + while (*p) { if (*p == psepcN) diff --git a/src/os_win32.c b/src/os_win32.c index f75040c11..6c1a3dbde 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -7004,6 +7004,8 @@ fix_arg_enc(void) str = utf16_to_enc(ArglistW[idx], NULL); if (str != NULL) { + int literal = used_file_literal; + #ifdef FEAT_DIFF /* When using diff mode may need to concatenate file name to * directory name. Just like it's done in main(). */ @@ -7025,7 +7027,15 @@ fix_arg_enc(void) if (used_file_literal) buf_set_name(fnum_list[i], str); - alist_add(&global_alist, str, used_file_literal ? 2 : 0); + /* Check backtick literal. backtick literal is already expanded in + * main.c, so this part add str as literal. */ + if (literal == FALSE) + { + int len = STRLEN(str); + if (len > 2 && *str == '`' && *(str + len - 1) == '`') + literal = TRUE; + } + alist_add(&global_alist, str, literal ? 2 : 0); } } diff --git a/src/version.c b/src/version.c index da594f762..5c64a7031 100644 --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 876, +/**/ 875, /**/ 874, |