aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-04-12 03:21:21 +0200
committerGitHub <noreply@github.com>2017-04-12 03:21:21 +0200
commitdd391bfca1f37093ba556f5da6a7f3eb81147fc0 (patch)
tree853aea222ea79998c63a0ef2e17e3e44101166e6 /src/nvim/event
parent2d72d85b23761383ac7838faed2f7b53bdce8817 (diff)
parent7c4e5dfd2722b8c25641cbbc66c5b0133d0e2f03 (diff)
downloadrneovim-dd391bfca1f37093ba556f5da6a7f3eb81147fc0.tar.gz
rneovim-dd391bfca1f37093ba556f5da6a7f3eb81147fc0.tar.bz2
rneovim-dd391bfca1f37093ba556f5da6a7f3eb81147fc0.zip
Merge #6497 from justinmk/win-quot
win: system('...'): special-case cmd.exe
Diffstat (limited to 'src/nvim/event')
-rw-r--r--src/nvim/event/libuv_process.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/event/libuv_process.c b/src/nvim/event/libuv_process.c
index 3da0c386b4..f5a41d151b 100644
--- a/src/nvim/event/libuv_process.c
+++ b/src/nvim/event/libuv_process.c
@@ -8,6 +8,7 @@
#include "nvim/event/process.h"
#include "nvim/event/libuv_process.h"
#include "nvim/log.h"
+#include "nvim/os/os.h"
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "event/libuv_process.c.generated.h"
@@ -24,6 +25,13 @@ int libuv_process_spawn(LibuvProcess *uvproc)
if (proc->detach) {
uvproc->uvopts.flags |= UV_PROCESS_DETACHED;
}
+#ifdef WIN32
+ // libuv collapses the argv to a CommandLineToArgvW()-style string. cmd.exe
+ // expects a different syntax (must be prepared by the caller before now).
+ if (os_shell_is_cmdexe(proc->argv[0])) {
+ uvproc->uvopts.flags |= UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS;
+ }
+#endif
uvproc->uvopts.exit_cb = exit_cb;
uvproc->uvopts.cwd = proc->cwd;
uvproc->uvopts.env = NULL;