summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-23 10:51:27 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-23 10:51:27 +0000
commit8f2f5c2ddbaf3d96a1d09aacc094ba8515de2295 (patch)
treea8c1e7ed633438869e4cd8ad31d5e6025e2ca182
parentb064ed2407a4e1f8fe95f9b127906e2beb804fc2 (diff)
downloadruby-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
-rw-r--r--ChangeLog4
-rw-r--r--win32/win32.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index cff28b6d9..b4ad74d48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Dec 23 19:51:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): deals with quoted commands.
+
Tue Dec 23 18:44:21 2008 Tanaka Akira <akr@fsij.org>
* strftime.c (rb_strftime): use locale insensitive functions for tr_TR
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, '/', '\\');
}