patch 9.1.1379: MS-Windows: error when running evim when space in path
Problem: MS-Windows: error when running evim when space in path of Vim
Solution: properly parse quoted strings (Miguel Barro)
When vim is installed in a path with whitespaces (like
`C:\Program Files (x86)\Vim\vim91\vim.exe`). Launching `evim` or
`vim -d` will try to open the file ` (x86)\Vim\vim91\vim.exe`.
Modern versions of vim simplify shell operation by parsing its own
command line. For example on Linux all vim flavours like `evim`, `rvim`,
etc are symlinks to vim. Then vim uses the `parse_command_name()`
function to identify which version of vim it should launch.
For `evim` if a GUI is available `gvim` is launched for better user
experience. In order to launch `gvim` the original command line is
parsed to be passed *verbatim* to the new instance.
This parsing did not properly handle quoted command lines with
whitespaces such as
```
"C:\Program Files (x86)\Vim\vim91\vim.exe" -y myfile.txt
```
closes: #17295
Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 400169a..a29fa91 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -5384,13 +5384,11 @@
{
if (*p == L'"')
{
- while (*p && *p != L'"')
- ++p;
- if (*p)
- ++p;
+ // Skip quoted strings
+ while (*++p && *p != L'"');
}
- else
- ++p;
+
+ ++p;
}
cmd = p;
}