diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-25 09:41:08 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-25 09:41:08 +0000 |
commit | 60be77013646a8819276a5e3da1ae80b7bc35d8a (patch) | |
tree | ea783f672b0dfba383644b5bcc2ef6f19360a1c8 /io.c | |
parent | a268f439f21477489a1072e23ed564a6bb0bd4ae (diff) |
* io.c (argf_read): read should not span two files. [ruby-dev:20073]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 17 |
1 files changed, 4 insertions, 13 deletions
@@ -113,7 +113,7 @@ struct timeval rb_time_interval _((VALUE)); static VALUE filename, current_file; static int gets_lineno; -static int init_p = 0, next_p = 0, first_p = 1; +static int init_p = 0, next_p = 0; static VALUE lineno; #ifdef _STDIO_USES_IOSTREAM /* GNU libc */ @@ -2934,7 +2934,6 @@ next_argv() filename = rb_str_new2("-"); } init_p = 1; - first_p = 0; gets_lineno = 0; } @@ -3034,10 +3033,7 @@ argf_getline(argc, argv) retry: if (!next_argv()) return Qnil; - if (TYPE(current_file) != T_FILE) { - line = rb_funcall3(current_file, rb_intern("gets"), argc, argv); - } - else if (argc == 0 && rb_rs == rb_default_rs) { + if (argc == 0 && rb_rs == rb_default_rs) { line = rb_io_gets(current_file); } else { @@ -3719,7 +3715,7 @@ argf_read(argc, argv) if (NIL_P(tmp) && next_p != -1) { io_close(current_file); next_p = 1; - goto retry; + return str; } if (NIL_P(tmp) || RSTRING(tmp)->len == 0) return str; else if (NIL_P(str)) str = tmp; @@ -3743,12 +3739,7 @@ argf_getc() retry: if (!next_argv()) return Qnil; - if (TYPE(current_file) != T_FILE) { - byte = rb_funcall3(current_file, rb_intern("getc"), 0, 0); - } - else { - byte = rb_io_getc(current_file); - } + byte = rb_io_getc(current_file); if (NIL_P(byte) && next_p != -1) { io_close(current_file); next_p = 1; |