From 7c152e7f08b1a4f5b4fd7872443b1f18d5276820 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 23 Dec 2008 10:51:27 +0000 Subject: [PATCH] * win32/win32.c (rb_w32_spawn): deals with quoted commands. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ win32/win32.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index cff28b6d94..b4ad74d48a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Dec 23 19:51:24 2008 Nobuyoshi Nakada + + * win32/win32.c (rb_w32_spawn): deals with quoted commands. + Tue Dec 23 18:44:21 2008 Tanaka Akira * strftime.c (rb_strftime): use locale insensitive functions for tr_TR diff --git a/win32/win32.c b/win32/win32.c index e111bf87ec..d346a925d6 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -918,6 +918,13 @@ rb_w32_spawn(int mode, const char *cmd, const char *prog) } else { int len = 0; + if (*cmd == '"') { + for (prog = cmd + 1; *prog && *prog != '"'; prog = CharNext(prog)); + len = prog - cmd - 1; + STRNDUPA(p, cmd + 1, len); + p = dln_find_exe_r(p, NULL, fbuf, sizeof(fbuf)); + if (p) goto command_found; + } for (prog = cmd; *prog; prog = CharNext(prog)) { if (ISSPACE(*prog)) { len = prog - cmd; @@ -955,6 +962,7 @@ rb_w32_spawn(int mode, const char *cmd, const char *prog) } } if (p) { + command_found: shell = p; translate_char(p, '/', '\\'); }