diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-03 12:33:37 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-03 12:33:37 +0000 |
commit | ca209c80e9ab2911793a8d348514698c3124214b (patch) | |
tree | c70306a9a8d2aaa282d4c082429a1b3f594269a5 | |
parent | e98e384be0f0f0b82302b0dc4e0e1f65d1d63470 (diff) | |
download | ruby-ca209c80e9ab2911793a8d348514698c3124214b.tar.gz |
* process.c (check_exec_redirect): accept :in, :out, :err as redirect
target.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20467 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | process.c | 12 | ||||
-rw-r--r-- | test/ruby/test_process.rb | 5 |
3 files changed, 22 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Wed Dec 3 21:30:06 2008 Tanaka Akira <akr@fsij.org> + + * process.c (check_exec_redirect): accept :in, :out, :err as redirect + target. + Wed Dec 3 21:18:27 2008 Tadayoshi Funaba <tadf@dotrb.org> * test/ruby/test_rational.rb: revert. @@ -1259,6 +1259,18 @@ check_exec_redirect(VALUE key, VALUE val, VALUE options) 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)); diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index ba933b2d56..a77773db20 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -306,6 +306,11 @@ class TestProcess < Test::Unit::TestCase 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 } |