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/