ruby-changes:13588
From: usa <ko1@a...>
Date: Fri, 16 Oct 2009 16:43:44 +0900 (JST)
Subject: [ruby-changes:13588] Ruby:r25369 (ruby_1_8): * win32/win32.c (CreateChild): recognize escape characters.
usa 2009-10-16 16:43:33 +0900 (Fri, 16 Oct 2009) New Revision: 25369 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25369 Log: * win32/win32.c (CreateChild): recognize escape characters. Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/win32/win32.c Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 25368) +++ ruby_1_8/ChangeLog (revision 25369) @@ -1,3 +1,7 @@ +Fri Oct 16 16:42:57 2009 NAKAMURA Usaku <usa@r...> + + * win32/win32.c (CreateChild): recognize escape characters. + Fri Oct 16 16:41:56 2009 NAKAMURA Usaku <usa@r...> * dln.c (dln_find_1): backport from trunkn. [ruby-core:25802] Index: ruby_1_8/win32/win32.c =================================================================== --- ruby_1_8/win32/win32.c (revision 25368) +++ ruby_1_8/win32/win32.c (revision 25369) @@ -1054,13 +1054,22 @@ cmd = tmp; } else { + char quote = (*cmd == '"') ? '"' : (*cmd == '\'') ? '\'' : 0; shell = NULL; - prog = cmd; - for (;;) { + for (prog = cmd + !!quote;; prog = CharNext(prog)) { if (!*prog) { p = dln_find_exe(cmd, NULL); break; } + if (*prog == quote) { + len = prog++ - cmd - 1; + p = ALLOCA_N(char, len + 1); + memcpy(p, cmd + 1, len); + p[len] = 0; + p = dln_find_exe(p, NULL); + break; + } + if (quote) continue; if (strchr(".:*?\"/\\", *prog)) { if (cmd[len]) { char *tmp = ALLOCA_N(char, len + 1); @@ -1078,7 +1087,6 @@ p = dln_find_exe(p, NULL); break; } - prog++; } } } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/