* 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
@ -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>
|
Tue Mar 4 13:41:46 2008 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* gc.c (add_heap): fix previous change. [ruby-dev:33988]
|
* 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
|
static VALUE
|
||||||
io_reopen(VALUE io, VALUE nfile)
|
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);
|
rb_ary_concat(args, v);
|
||||||
MEMCPY(RARRAY_PTR(args)+1, RARRAY_PTR(v), VALUE, RARRAY_LEN(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;
|
return;
|
||||||
}
|
}
|
||||||
v = rb_hash_aref(opt, mode);
|
v = rb_hash_aref(opt, mode);
|
||||||
if (!NIL_P(v)) {
|
if (!NIL_P(v)) {
|
||||||
arg->io = rb_io_open(RSTRING_PTR(argv[0]), StringValueCStr(v));
|
arg->io = rb_io_open(RSTRING_PTR(argv[0]), StringValueCStr(v));
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
if (!arg->io) {
|
|
||||||
arg->io = rb_io_open(RSTRING_PTR(argv[0]), "r");
|
arg->io = rb_io_open(RSTRING_PTR(argv[0]), "r");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user