diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-20 11:16:59 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-20 11:16:59 +0000 |
commit | 9074da1b4424b09916d4baf23b26c7cfae75ac44 (patch) | |
tree | 85ab4da34f37cb643b5550d5d725b3d59e6e3346 /io.c | |
parent | f684d04a66b08492dd61ff1a40db289cb0daeba4 (diff) | |
download | ruby-9074da1b4424b09916d4baf23b26c7cfae75ac44.tar.gz |
* io.c (rb_scan_open_args): extracted from rb_open_file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -4523,13 +4523,14 @@ io_set_encoding(VALUE io, VALUE opt) } } -static VALUE -rb_open_file(int argc, VALUE *argv, VALUE io) +static void +rb_scan_open_args(int argc, VALUE *argv, + VALUE *fname_p, int *modenum_p, int *flags_p, + convconfig_t *convconfig_p, unsigned int *fmode_p) { VALUE opt=Qnil, fname, vmode, perm; int modenum, flags; unsigned int fmode; - convconfig_t convconfig = { NULL, NULL }; if (0 < argc) { opt = rb_check_convert_type(argv[argc-1], T_HASH, "Hash", "to_hash"); @@ -4560,10 +4561,25 @@ rb_open_file(int argc, VALUE *argv, VALUE io) #endif FilePathValue(fname); - rb_io_extract_modeenc(vmode, opt, &modenum, &flags, &convconfig); + rb_io_extract_modeenc(vmode, opt, &modenum, &flags, convconfig_p); fmode = NIL_P(perm) ? 0666 : NUM2UINT(perm); + *fname_p = fname; + *modenum_p = modenum; + *flags_p = flags; + *fmode_p = fmode; +} + +static VALUE +rb_open_file(int argc, VALUE *argv, VALUE io) +{ + VALUE fname; + int modenum, flags; + convconfig_t convconfig; + unsigned int fmode; + + rb_scan_open_args(argc, argv, &fname, &modenum, &flags, &convconfig, &fmode); rb_file_open_generic(io, RSTRING_PTR(fname), modenum, flags, &convconfig, fmode); return io; |