[前][次][番号順一覧][スレッド一覧]

ruby-changes:23869

From: akr <ko1@a...>
Date: Tue, 5 Jun 2012 19:35:57 +0900 (JST)
Subject: [ruby-changes:23869] akr:r35920 (trunk): * process.c (proc_spawn): don't detect simple command line here

akr	2012-06-05 19:35:47 +0900 (Tue, 05 Jun 2012)

  New Revision: 35920

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35920

  Log:
    * process.c (proc_spawn): don't detect simple command line here
      because rb_exec_fillarg already did.

  Modified files:
    trunk/ChangeLog
    trunk/process.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 35919)
+++ ChangeLog	(revision 35920)
@@ -1,3 +1,8 @@
+Tue Jun  5 19:33:51 2012  Tanaka Akira  <akr@f...>
+
+	* process.c (proc_spawn): don't detect simple command line here
+	  because rb_exec_fillarg already did.
+
 Tue Jun  5 19:21:10 2012  Tanaka Akira  <akr@f...>
 
 	* process.c (rb_exec_fillarg): bail out a loop eagerly.
Index: process.c
===================================================================
--- process.c	(revision 35919)
+++ process.c	(revision 35920)
@@ -1278,30 +1278,13 @@
 proc_spawn(char *str)
 {
     char fbuf[MAXPATHLEN];
-    char *s, *t;
-    char **argv, **a;
     rb_pid_t status;
-    VALUE v;
 
-    for (s = str; *s; s++) {
-	if (*s != ' ' && !ISALPHA(*s) && strchr("*?{}[]<>()~&|\\$;'`\"\n",*s)) {
-	    char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf));
-	    before_exec();
-	    status = spawnl(P_NOWAIT, (shell ? shell : "/bin/sh"), "sh", "-c", str, (char*)NULL);
-	    rb_last_status_set(status == -1 ? 127 : status, 0);
-	    after_exec();
-	    return status;
-	}
-    }
-    a = argv = ALLOC_ARGV_WITH_STR((s - str) / 2 + 2, v, s, s - str + 1);
-    strcpy(s, str);
-    if (*a++ = strtok(s, " \t")) {
-	while (t = strtok(NULL, " \t"))
-	    *a++ = t;
-	*a = NULL;
-    }
-    status = argv[0] ? proc_spawn_v(argv, 0) : -1;
-    ALLOCV_END(v);
+    char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf));
+    before_exec();
+    status = spawnl(P_NOWAIT, (shell ? shell : "/bin/sh"), "sh", "-c", str, (char*)NULL);
+    rb_last_status_set(status == -1 ? 127 : status, 0);
+    after_exec();
     return status;
 }
 #endif

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]