summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-20 11:16:59 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-20 11:16:59 +0000
commit2d6dfce7182cc8decf58df453b75380efb89700a (patch)
tree85ab4da34f37cb643b5550d5d725b3d59e6e3346
parent319c40bf58d91929216d3fdc2f34d8ea799daa29 (diff)
downloadruby-2d6dfce7182cc8decf58df453b75380efb89700a.tar.gz
ruby-2d6dfce7182cc8decf58df453b75380efb89700a.tar.xz
ruby-2d6dfce7182cc8decf58df453b75380efb89700a.zip
* io.c (rb_scan_open_args): extracted from rb_open_file.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--io.c24
2 files changed, 24 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 39d278a65..4db67c002 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Aug 20 20:16:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): extracted from rb_open_file.
+
Wed Aug 20 19:22:32 2008 Tanaka Akira <akr@fsij.org>
* io.c (convconfig_t): new type.
diff --git a/io.c b/io.c
index ff27cd342..a0b877e3f 100644
--- a/io.c
+++ b/io.c
@@ -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;