[#1026] Is this a bug? — Dave Thomas <Dave@...>
18 messages
2000/01/03
[#1053] rand() / drand48() — ts <decoux@...>
11 messages
2000/01/05
[#1055] Re: rand() / drand48()
— matz@... (Yukihiro Matsumoto)
2000/01/05
[#1061] Re: rand() / drand48()
— gotoken@... (GOTO Kentaro)
2000/01/07
Hi,
[#1067] Here docs not skipping leading spaces — Dave Thomas <Dave@...>
5 messages
2000/01/08
[#1083] YADQ (Yet Another Dumb Question) — Dave Thomas <Dave@...>
12 messages
2000/01/10
[#1084] Infinite loop — Dave Thomas <Dave@...>
17 messages
2000/01/11
[#1104] The value of while... — Dave Thomas <Dave@...>
24 messages
2000/01/11
[#1114] Re: The value of while...
— Dave Thomas <Dave@...>
2000/01/12
matz@netlab.co.jp (Yukihiro Matsumoto) writes:
[#1128] Re: The value of while... — David Suarez de Lis <excalibor@...>
Hi all,
1 message
2000/01/12
[#1133] Re: Class variables... — David Suarez de Lis <excalibor@...>
Hi there,
2 messages
2000/01/12
[#1158] Is this expected behavior? — Dave Thomas <Dave@...>
6 messages
2000/01/21
[#1172] Re: Possible bug in ruby-man-1.4 — Huayin Wang <wang@...>
> |Well, I guess it comes down to what you mean by an integer
10 messages
2000/01/24
[#1177] Re: Possible bug in ruby-man-1.4
— Dave Thomas <Dave@...>
2000/01/25
matz@netlab.co.jp (Yukihiro Matsumoto) writes:
[#1188] Enumerable and index — Dave Thomas <Dave@...>
5 messages
2000/01/27
[#1193] Semantics of chomp/chop — Dave Thomas <Dave@...>
7 messages
2000/01/28
[#1197] Question about 'open' — Dave Thomas <Dave@...>
8 messages
2000/01/30
[ruby-talk:01202] Re: Question about 'open'
From:
matz@... (Yukihiro Matsumoto)
Date:
2000-01-31 01:17:13 UTC
List:
ruby-talk #1202
Hi,
In message "[ruby-talk:01197] Question about 'open'"
on 00/01/29, Dave Thomas <Dave@thomases.com> writes:
|However,
|
| open("|-", "w+") { |f|
| if f == nil
| print "in Child\n"
| else
| print "Got: ", f.gets, "\n"
| end
| }
|
|outputs
|
| Got: nil
Oops, I forgot to execute a block in child process.
--- /tmp/io.c Mon Jan 31 10:16:02 2000
+++ io.c Mon Jan 31 10:12:43 2000
@@ -1570,7 +1576,12 @@
}
Check_SafeStr(pname);
port = pipe_open(RSTRING(pname)->ptr, mode);
- if (NIL_P(port)) return Qnil;
+ if (NIL_P(port)) {
+ rb_yield(port);
+ }
+ else if (rb_iterator_p()) {
+ return rb_ensure(rb_yield, port, rb_io_close, port);
+ }
return port;
}
@@ -1641,8 +1652,10 @@
}
port = pipe_open(RSTRING(pname)->ptr+1, mode);
- if (NIL_P(port)) return Qnil;
- if (rb_iterator_p()) {
+ if (NIL_P(port)) {
+ rb_yield(port);
+ }
+ else if (rb_iterator_p()) {
return rb_ensure(rb_yield, port, rb_io_close, port);
}