ruby-changes:23845
From: usa <ko1@a...>
Date: Mon, 4 Jun 2012 10:44:46 +0900 (JST)
Subject: [ruby-changes:23845] usa:r35896 (trunk): * io.c (pipe_open): follow up changes in r35889.
usa 2012-06-04 10:44:27 +0900 (Mon, 04 Jun 2012) New Revision: 35896 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35896 Log: * io.c (pipe_open): follow up changes in r35889. * process.c (proc_spawn_n): now uses char ** instead of VALUE *. * process.c (rb_spawn_process): prog is now VALUE of String, not char *. Modified files: trunk/ChangeLog trunk/io.c trunk/process.c Index: ChangeLog =================================================================== --- ChangeLog (revision 35895) +++ ChangeLog (revision 35896) @@ -1,3 +1,11 @@ +Mon Jun 4 10:42:04 2012 NAKAMURA Usaku <usa@r...> + + * io.c (pipe_open): follow up changes in r35889. + + * process.c (proc_spawn_n): now uses char ** instead of VALUE *. + + * process.c (rb_spawn_process): prog is now VALUE of String, not char *. + Mon Jun 4 06:12:43 2012 Nobuyoshi Nakada <nobu@r...> * marshal.c (r_object0): remove old warning for _alloc. Index: io.c =================================================================== --- io.c (revision 35895) +++ io.c (revision 35896) @@ -5501,24 +5501,6 @@ cmd = StringValueCStr(prog); #endif -#if !defined(HAVE_FORK) - if (!eargp) { - /* fork : IO.popen("-") */ - argc = 0; - argv = 0; - } - else if (eargp->argc) { - /* no shell : IO.popen([prog, arg0], arg1, ...) */ - argc = eargp->argc; - argv = eargp->argv; - } - else { - /* with shell : IO.popen(prog) */ - argc = 0; - argv = 0; - } -#endif - #if defined(HAVE_FORK) arg.execp = eargp; arg.modef = fmode; @@ -5599,18 +5581,8 @@ fd = arg.pair[1]; } #elif defined(_WIN32) - if (argc) { - int i; - - if (argc >= (int)(FIXNUM_MAX / sizeof(char *))) { - rb_raise(rb_eArgError, "too many arguments"); - } - argbuf = rb_str_tmp_new((argc+1) * sizeof(char *)); - args = (void *)RSTRING_PTR(argbuf); - for (i = 0; i < argc; ++i) { - args[i] = StringValueCStr(argv[i]); - } - args[i] = NULL; + if (eargp && eargp->argv_str) { + args = (char **)RSTRING_PTR(eargp->argv_str); } switch (fmode & (FMODE_READABLE|FMODE_WRITABLE)) { case FMODE_READABLE|FMODE_WRITABLE: Index: process.c =================================================================== --- process.c (revision 35895) +++ process.c (revision 35896) @@ -1253,30 +1253,21 @@ #endif static rb_pid_t -proc_spawn_n(int argc, VALUE *argv, VALUE prog, VALUE options) +proc_spawn_n(int argc, char **argv, VALUE prog, VALUE options) { - char **args; - int i; - VALUE v; rb_pid_t pid = -1; - args = ALLOC_ARGV(argc + 1, v); - for (i = 0; i < argc; i++) { - args[i] = RSTRING_PTR(argv[i]); - } - args[i] = (char*) 0; - if (args[0]) { + if (argv[0]) { #if defined(_WIN32) DWORD flags = 0; if (RTEST(rb_ary_entry(options, EXEC_OPTION_NEW_PGROUP))) { flags = CREATE_NEW_PROCESS_GROUP; } - pid = rb_w32_aspawn_flags(P_NOWAIT, prog ? RSTRING_PTR(prog) : 0, args, flags); + pid = rb_w32_aspawn_flags(P_NOWAIT, prog ? RSTRING_PTR(prog) : 0, argv, flags); #else - pid = proc_spawn_v(args, prog ? RSTRING_PTR(prog) : 0); + pid = proc_spawn_v(argv, prog ? RSTRING_PTR(prog) : 0); #endif } - ALLOCV_END(v); return pid; } @@ -3096,7 +3087,7 @@ if (prog && !earg->use_shell) { char **argv = (char **)RSTRING_PTR(earg->argv_str); - argv[0] = prog; + argv[0] = RSTRING_PTR(prog); } # if defined HAVE_SPAWNV if (earg->use_shell) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/