diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-23 10:51:27 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-23 10:51:27 +0000 |
commit | 8f2f5c2ddbaf3d96a1d09aacc094ba8515de2295 (patch) | |
tree | a8c1e7ed633438869e4cd8ad31d5e6025e2ca182 /win32 | |
parent | b064ed2407a4e1f8fe95f9b127906e2beb804fc2 (diff) | |
download | ruby-8f2f5c2ddbaf3d96a1d09aacc094ba8515de2295.tar.gz ruby-8f2f5c2ddbaf3d96a1d09aacc094ba8515de2295.tar.xz ruby-8f2f5c2ddbaf3d96a1d09aacc094ba8515de2295.zip |
* win32/win32.c (rb_w32_spawn): deals with quoted commands.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r-- | win32/win32.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/win32/win32.c b/win32/win32.c index e111bf87e..d346a925d 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, '/', '\\'); } |