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:
parent
8e1d6b214a
commit
70b55c5dcf
2 changed files with 25 additions and 3 deletions
|
@ -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
23
io.c
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue