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

ruby-changes:8931

From: akr <ko1@a...>
Date: Wed, 3 Dec 2008 21:33:52 +0900 (JST)
Subject: [ruby-changes:8931] Ruby:r20467 (trunk): * process.c (check_exec_redirect): accept :in, :out, :err as redirect

akr	2008-12-03 21:33:37 +0900 (Wed, 03 Dec 2008)

  New Revision: 20467

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

  Log:
    * process.c (check_exec_redirect): accept :in, :out, :err as redirect
      target.

  Modified files:
    trunk/ChangeLog
    trunk/process.c
    trunk/test/ruby/test_process.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20466)
+++ ChangeLog	(revision 20467)
@@ -1,3 +1,8 @@
+Wed Dec  3 21:30:06 2008  Tanaka Akira  <akr@f...>
+
+	* process.c (check_exec_redirect): accept :in, :out, :err as redirect
+	  target.
+
 Wed Dec  3 21:18:27 2008  Tadayoshi Funaba  <tadf@d...>
 
 	* test/ruby/test_rational.rb: revert.
Index: process.c
===================================================================
--- process.c	(revision 20466)
+++ process.c	(revision 20467)
@@ -1259,6 +1259,18 @@
             index = EXEC_OPTION_CLOSE;
             param = Qnil;
         }
+        else if (id == rb_intern("in")) {
+            index = EXEC_OPTION_DUP2;
+            param = INT2FIX(0);
+        }
+        else if (id == rb_intern("out")) {
+            index = EXEC_OPTION_DUP2;
+            param = INT2FIX(1);
+        }
+        else if (id == rb_intern("err")) {
+            index = EXEC_OPTION_DUP2;
+            param = INT2FIX(2);
+        }
         else {
             rb_raise(rb_eArgError, "wrong exec redirect symbol: %s",
                                    rb_id2name(id));
Index: test/ruby/test_process.rb
===================================================================
--- test/ruby/test_process.rb	(revision 20466)
+++ test/ruby/test_process.rb	(revision 20467)
@@ -306,6 +306,11 @@
       Process.wait Process.spawn(*ECHO["e"], STDOUT=>["out", File::WRONLY|File::CREAT|File::TRUNC, 0644],
                                  3=>STDOUT, 4=>STDOUT, 5=>STDOUT, 6=>STDOUT, 7=>STDOUT)
       assert_equal("e", File.read("out").chomp)
+      Process.wait Process.spawn(*ECHO["ee"], STDOUT=>["out", File::WRONLY|File::CREAT|File::TRUNC, 0644],
+                                 3=>0, 4=>:in, 5=>STDIN,
+                                 6=>1, 7=>:out, 8=>STDOUT,
+                                 9=>2, 10=>:err, 11=>STDERR)
+      assert_equal("ee", File.read("out").chomp)
       File.open("out", "w") {|f|
         h = {STDOUT=>f, f=>STDOUT}
         3.upto(30) {|i| h[i] = STDOUT if f.fileno != i }

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

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