Feature #7067 » patch.diff
io.c | ||
---|---|---|
}
|
||
if (!NIL_P(nmode)) {
|
||
int fmode = rb_io_modestr_fmode(StringValueCStr(nmode));
|
||
VALUE intmode;
|
||
int fmode;
|
||
|
||
if (!NIL_P(intmode = rb_check_to_integer(nmode, "to_int"))) {
|
||
oflags = NUM2INT(intmode);
|
||
fmode = rb_io_oflags_fmode(oflags);
|
||
}
|
||
else {
|
||
fmode = rb_io_modestr_fmode(StringValueCStr(nmode));
|
||
}
|
||
|
||
if (IS_PREP_STDIO(fptr) &&
|
||
((fptr->mode & FMODE_READWRITE) & (fmode & FMODE_READWRITE)) !=
|
||
(fptr->mode & FMODE_READWRITE)) {
|
||
... | ... | |
rb_io_fmode_modestr(fmode));
|
||
}
|
||
fptr->mode = fmode;
|
||
rb_io_mode_enc(fptr, StringValueCStr(nmode));
|
||
if (NIL_P(intmode)) {
|
||
rb_io_mode_enc(fptr, StringValueCStr(nmode));
|
||
}
|
||
fptr->encs.ecflags = 0;
|
||
fptr->encs.ecopts = Qnil;
|
||
}
|
test/ruby/test_io.rb | ||
---|---|---|
}
|
||
end
|
||
def test_reopen_mode
|
||
make_tempfile {|t|
|
||
open(__FILE__) do |f|
|
||
assert_nothing_raised {
|
||
f.reopen(t.path, "r")
|
||
assert_equal("foo\n", f.gets)
|
||
}
|
||
end
|
||
|
||
open(__FILE__) do |f|
|
||
assert_nothing_raised {
|
||
f.reopen(t.path, File::RDONLY)
|
||
assert_equal("foo\n", f.gets)
|
||
}
|
||
end
|
||
}
|
||
end
|
||
|
||
def test_foreach
|
||
a = []
|
||
IO.foreach("|" + EnvUtil.rubybin + " -e 'puts :foo; puts :bar; puts :baz'") {|x| a << x }
|