mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* io.c (rb_io_s_sysopen): mode can be a Bignum.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ddda4e5508
commit
fbc6ea6c95
2 changed files with 12 additions and 5 deletions
|
@ -1,3 +1,7 @@
|
|||
Fri Aug 22 03:03:22 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c (rb_io_s_sysopen): mode can be a Bignum.
|
||||
|
||||
Fri Aug 22 02:57:03 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c (rb_io_extract_modeenc): notify coerced to caller.
|
||||
|
|
13
io.c
13
io.c
|
@ -4624,25 +4624,28 @@ static VALUE
|
|||
rb_io_s_sysopen(int argc, VALUE *argv)
|
||||
{
|
||||
VALUE fname, vmode, vperm;
|
||||
int flags, fd;
|
||||
VALUE intmode;
|
||||
int modenum, fd;
|
||||
mode_t perm;
|
||||
char *path;
|
||||
|
||||
rb_scan_args(argc, argv, "12", &fname, &vmode, &vperm);
|
||||
FilePathValue(fname);
|
||||
|
||||
if (NIL_P(vmode)) flags = O_RDONLY;
|
||||
else if (FIXNUM_P(vmode)) flags = FIX2INT(vmode);
|
||||
if (NIL_P(vmode))
|
||||
modenum = O_RDONLY;
|
||||
else if (!NIL_P(intmode = rb_check_to_integer(vmode, "to_int")))
|
||||
modenum = NUM2INT(intmode);
|
||||
else {
|
||||
SafeStringValue(vmode);
|
||||
flags = rb_io_mode_modenum(StringValueCStr(vmode));
|
||||
modenum = rb_io_mode_modenum(StringValueCStr(vmode));
|
||||
}
|
||||
if (NIL_P(vperm)) perm = 0666;
|
||||
else perm = NUM2UINT(vperm);
|
||||
|
||||
RB_GC_GUARD(fname) = rb_str_new4(fname);
|
||||
path = RSTRING_PTR(fname);
|
||||
fd = rb_sysopen(path, flags, perm);
|
||||
fd = rb_sysopen(path, modenum, perm);
|
||||
return INT2NUM(fd);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue