diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-09-07 14:43:10 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-09-07 14:43:10 +0000 |
commit | 69cc900f523dff669a788d57e9599cb43263a9f5 (patch) | |
tree | 242da261fa0bf782c318e954ea0dac8281e331ae /io.c | |
parent | f37162c06f180627dc91cdac1be14664b66a0962 (diff) |
merge revision(s) 33171:
* io.c (argf_next_argv): open in default text mode.
[ruby-core:39234] [Bug #5268]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@33211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -6840,6 +6840,7 @@ argf_next_argv(VALUE argf) char *fn; rb_io_t *fptr; int stdout_binmode = 0; + int fmode; if (TYPE(rb_stdout) == T_FILE) { GetOpenFile(rb_stdout, fptr); @@ -6948,19 +6949,25 @@ argf_next_argv(VALUE argf) rb_stdout = write_io; if (stdout_binmode) rb_io_binmode(rb_stdout); } - ARGF.current_file = prep_io(fr, FMODE_READABLE, rb_cFile, fn); + fmode = FMODE_READABLE; + if (!ARGF.binmode) fmode |= DEFAULT_TEXTMODE; + ARGF.current_file = prep_io(fr, fmode, rb_cFile, fn); if (!NIL_P(write_io)) { rb_io_set_write_io(ARGF.current_file, write_io); } } if (ARGF.binmode) rb_io_ascii8bit_binmode(ARGF.current_file); + GetOpenFile(ARGF.current_file, fptr); if (ARGF.encs.enc) { - rb_io_t *fptr; - - GetOpenFile(ARGF.current_file, fptr); fptr->encs = ARGF.encs; clear_codeconv(fptr); } + else { + fptr->encs.ecflags &= ~ECONV_NEWLINE_DECORATOR_MASK; + if (!ARGF.binmode) { + fptr->encs.ecflags |= ECONV_DEFAULT_NEWLINE_DECORATOR; + } + } ARGF.next_p = 0; } else { |