summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-07 14:43:10 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-07 14:43:10 +0000
commit69cc900f523dff669a788d57e9599cb43263a9f5 (patch)
tree242da261fa0bf782c318e954ea0dac8281e331ae /io.c
parentf37162c06f180627dc91cdac1be14664b66a0962 (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.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/io.c b/io.c
index b0d4ff3ce2..acb6253e26 100644
--- a/io.c
+++ b/io.c
@@ -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 {