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

ruby-changes:24106

From: akr <ko1@a...>
Date: Thu, 21 Jun 2012 06:25:37 +0900 (JST)
Subject: [ruby-changes:24106] akr:r36157 (trunk): * process.c (rb_execarg_fixup): take a VALUE argument instead of

akr	2012-06-21 06:25:20 +0900 (Thu, 21 Jun 2012)

  New Revision: 36157

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

  Log:
    * process.c (rb_execarg_fixup): take a VALUE argument instead of
      struct rb_execarg.
    
    * internal.h (rb_execarg_fixup): follow the definition change.
    
    * io.c (pipe_open): follow rb_execarg_fixup change.
    
    * ext/pty/pty.c (establishShell): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/ext/pty/pty.c
    trunk/internal.h
    trunk/io.c
    trunk/process.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36156)
+++ ChangeLog	(revision 36157)
@@ -1,3 +1,14 @@
+Thu Jun 21 06:21:54 2012  Tanaka Akira  <akr@f...>
+
+	* process.c (rb_execarg_fixup): take a VALUE argument instead of
+	  struct rb_execarg.
+
+	* internal.h (rb_execarg_fixup): follow the definition change.
+
+	* io.c (pipe_open): follow rb_execarg_fixup change.
+
+	* ext/pty/pty.c (establishShell): ditto.
+
 Wed Jun 20 21:25:37 2012  Tanaka Akira  <akr@f...>
 
 	* internal.h (struct rb_execarg): add umask_given and umask_mask
Index: io.c
===================================================================
--- io.c	(revision 36156)
+++ io.c	(revision 36157)
@@ -5342,6 +5342,7 @@
 
 #ifdef HAVE_FORK
 struct popen_arg {
+    VALUE execarg_obj;
     struct rb_execarg *execp;
     int modef;
     int pair[2];
@@ -5466,8 +5467,9 @@
 #endif
 
 static VALUE
-pipe_open(struct rb_execarg *eargp, const char *modestr, int fmode, convconfig_t *convconfig)
+pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convconfig)
 {
+    struct rb_execarg *eargp = NIL_P(execarg_obj) ? NULL : rb_execarg_get(execarg_obj);
     VALUE prog = eargp ? (eargp->use_shell ? eargp->invoke.sh.shell_script : eargp->invoke.cmd.command_name) : Qfalse ;
     rb_pid_t pid = 0;
     rb_io_t *fptr;
@@ -5501,6 +5503,7 @@
 #endif
 
 #if defined(HAVE_FORK)
+    arg.execarg_obj = execarg_obj;
     arg.execp = eargp;
     arg.modef = fmode;
     arg.pair[0] = arg.pair[1] = -1;
@@ -5536,8 +5539,8 @@
       default:
         rb_sys_fail_str(prog);
     }
-    if (eargp) {
-        rb_execarg_fixup(arg.execp);
+    if (!NIL_P(execarg_obj)) {
+        rb_execarg_fixup(execarg_obj);
 	pid = rb_fork_async_signal_safe(&status, popen_exec, &arg, arg.execp->redirect_fds, errmsg, sizeof(errmsg));
     }
     else {
@@ -5614,8 +5617,8 @@
       default:
         rb_sys_fail_str(prog);
     }
-    if (eargp) {
-	rb_execarg_fixup(eargp);
+    if (!NIL_P(execarg_obj)) {
+	rb_execarg_fixup(execarg_obj);
 	rb_execarg_run_options(eargp, &sarg, NULL, 0);
     }
     while ((pid = (args ?
@@ -5670,8 +5673,8 @@
 	prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
 	cmd = StringValueCStr(prog);
     }
-    if (eargp) {
-	rb_execarg_fixup(eargp);
+    if (!NIL_P(execarg_obj)) {
+	rb_execarg_fixup(execarg_obj);
 	rb_execarg_run_options(eargp, &sarg, NULL, 0);
     }
     fp = popen(cmd, modestr);
@@ -5730,7 +5733,7 @@
     struct rb_execarg *earg;
     execarg_obj = rb_execarg_new(argc, argv, FALSE);
     earg = rb_execarg_get(execarg_obj);
-    ret = pipe_open(earg, modestr, fmode, convconfig);
+    ret = pipe_open(execarg_obj, modestr, fmode, convconfig);
     RB_GC_GUARD(execarg_obj);
     return ret;
 }
@@ -5749,12 +5752,12 @@
 	rb_raise(rb_eNotImpError,
 		 "fork() function is unimplemented on this machine");
 #endif
-        return pipe_open(NULL, modestr, fmode, convconfig);
+        return pipe_open(Qnil, modestr, fmode, convconfig);
     }
 
     execarg_obj = rb_execarg_new(argc, argv, TRUE);
     earg = rb_execarg_get(execarg_obj);
-    ret = pipe_open(earg, modestr, fmode, convconfig);
+    ret = pipe_open(execarg_obj, modestr, fmode, convconfig);
     RB_GC_GUARD(execarg_obj);
     return ret;
 }
Index: process.c
===================================================================
--- process.c	(revision 36156)
+++ process.c	(revision 36157)
@@ -2105,8 +2105,9 @@
 static long run_exec_dup2_tmpbuf_size(long n);
 
 void
-rb_execarg_fixup(struct rb_execarg *e)
+rb_execarg_fixup(VALUE execarg_obj)
 {
+    struct rb_execarg *e = rb_execarg_get(execarg_obj);
     VALUE unsetenv_others, envopts;
     VALUE ary;
 
@@ -2173,21 +2174,15 @@
         }
         */
     }
+    RB_GC_GUARD(execarg_obj);
 }
 
 void
 rb_exec_arg_fixup(struct rb_exec_arg *e)
 {
-    rb_execarg_fixup(rb_execarg_get(e->execarg_obj));
+    rb_execarg_fixup(e->execarg_obj);
 }
 
-static void
-rb_exec_arg_prepare(struct rb_execarg *earg, int argc, VALUE *argv)
-{
-    rb_execarg_init(argc, argv, TRUE, earg);
-    rb_execarg_fixup(earg);
-}
-
 static int rb_exec_without_timer_thread(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
 
 /*
@@ -2251,7 +2246,7 @@
 
     execarg_obj = rb_execarg_new(argc, argv, TRUE);
     earg = rb_execarg_get(execarg_obj);
-    rb_execarg_fixup(earg);
+    rb_execarg_fixup(execarg_obj);
     fail_str = earg->use_shell ? earg->invoke.sh.shell_script : earg->invoke.cmd.command_name;
 
 #ifdef __MacOS_X__
@@ -3543,7 +3538,7 @@
 
     execarg_obj = rb_execarg_new(argc, argv, TRUE);
     earg = rb_execarg_get(execarg_obj);
-    rb_execarg_fixup(earg);
+    rb_execarg_fixup(execarg_obj);
     ret = rb_spawn_process(earg, errmsg, errmsg_buflen);
     RB_GC_GUARD(execarg_obj);
     return ret;
@@ -3882,7 +3877,7 @@
 
     execarg_obj = rb_execarg_new(argc, argv, TRUE);
     earg = rb_execarg_get(execarg_obj);
-    rb_execarg_fixup(earg);
+    rb_execarg_fixup(execarg_obj);
     fail_str = earg->use_shell ? earg->invoke.sh.shell_script : earg->invoke.cmd.command_name;
 
     pid = rb_spawn_process(earg, errmsg, sizeof(errmsg));
Index: ext/pty/pty.c
===================================================================
--- ext/pty/pty.c	(revision 36156)
+++ ext/pty/pty.c	(revision 36157)
@@ -179,7 +179,7 @@
 
     carg.execarg_obj = rb_execarg_new(argc, argv, 1);
     carg.earg = rb_execarg_get(carg.execarg_obj);
-    rb_execarg_fixup(carg.earg);
+    rb_execarg_fixup(carg.execarg_obj);
 
     getDevice(&master, &slave, SlaveName, 0);
 
Index: internal.h
===================================================================
--- internal.h	(revision 36156)
+++ internal.h	(revision 36157)
@@ -292,7 +292,7 @@
 struct rb_execarg *rb_execarg_get(VALUE execarg_obj); /* dangerous.  needs GC guard. */
 VALUE rb_execarg_init(int argc, VALUE *argv, int accept_shell, struct rb_execarg *e);
 int rb_execarg_addopt(struct rb_execarg *e, VALUE key, VALUE val);
-void rb_execarg_fixup(struct rb_execarg *e);
+void rb_execarg_fixup(VALUE execarg_obj);
 int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
 
 #if defined __GNUC__ && __GNUC__ >= 4

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

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