1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* io.c (open_key_args): use rb_io_open_with_args instead of rb_f_open.

[ruby-core:15763]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2008-03-04 05:36:08 +00:00
parent 8e1d6b214a
commit 70b55c5dcf
2 changed files with 25 additions and 3 deletions

View file

@ -1,3 +1,8 @@
Tue Mar 04 14:35:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
* io.c (open_key_args): use rb_io_open_with_args instead of rb_f_open.
[ruby-core:15763]
Tue Mar 4 13:41:46 2008 Tanaka Akira <akr@fsij.org>
* gc.c (add_heap): fix previous change. [ruby-dev:33988]

23
io.c
View file

@ -4092,6 +4092,24 @@ rb_io_open(const char *fname, const char *mode)
}
}
static VALUE
rb_io_open_with_args(int argc, VALUE *argv)
{
const char *mode;
VALUE pname, pmode;
if (rb_scan_args(argc, argv, "11", &pname, &pmode) == 1) {
mode = "r";
}
else if (FIXNUM_P(pmode)) {
mode = rb_io_modenum_mode(FIX2INT(pmode));
}
else {
mode = StringValueCStr(pmode);
}
return rb_io_open(StringValueCStr(pname), mode);
}
static VALUE
io_reopen(VALUE io, VALUE nfile)
{
@ -5927,15 +5945,14 @@ open_key_args(int argc, VALUE *argv, struct foreach_arg *arg)
rb_ary_concat(args, v);
MEMCPY(RARRAY_PTR(args)+1, RARRAY_PTR(v), VALUE, RARRAY_LEN(v));
arg->io = rb_f_open(RARRAY_LEN(args), RARRAY_PTR(args));
arg->io = rb_io_open_with_args(RARRAY_LEN(args), RARRAY_PTR(args));
return;
}
v = rb_hash_aref(opt, mode);
if (!NIL_P(v)) {
arg->io = rb_io_open(RSTRING_PTR(argv[0]), StringValueCStr(v));
}
if (!arg->io) {
else {
arg->io = rb_io_open(RSTRING_PTR(argv[0]), "r");
}