From 7dc7da3d86bed37d1c9ec7331b45b418746ce65d Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 2 Sep 2011 12:11:17 +0000 Subject: * io.c (validate_enc_binmode, prep_stdio): default to text mode on dosish platforms. [ruby-core:38822] [Bug #5164] * transcode.c (rb_econv_prepare_options): keep default ecflags unchanged if no options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ io.c | 5 +++-- transcode.c | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 394cd34b64..60f9dd762e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada + + * io.c (validate_enc_binmode, prep_stdio): default to text mode on + dosish platforms. [ruby-core:38822] [Bug #5164] + + * transcode.c (rb_econv_prepare_options): keep default ecflags + unchanged if no options. + Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada * vm_insnhelper.c (vm_search_const_defined_class): search diff --git a/io.c b/io.c index d109f15c2b..cf338f2834 100644 --- a/io.c +++ b/io.c @@ -4435,7 +4435,7 @@ validate_enc_binmode(int *fmode_p, int ecflags, rb_encoding *enc, rb_encoding *e rb_raise(rb_eArgError, "ASCII incompatible encoding needs binmode"); if (!(fmode & FMODE_BINMODE) && - (ecflags & ECONV_NEWLINE_DECORATOR_MASK)) { + (DEFAULT_TEXTMODE || (ecflags & ECONV_NEWLINE_DECORATOR_MASK))) { fmode |= DEFAULT_TEXTMODE; *fmode_p = fmode; } @@ -6412,9 +6412,10 @@ static VALUE prep_stdio(FILE *f, int fmode, VALUE klass, const char *path) { rb_io_t *fptr; - VALUE io = prep_io(fileno(f), fmode|FMODE_PREP, klass, path); + VALUE io = prep_io(fileno(f), fmode|FMODE_PREP|DEFAULT_TEXTMODE, klass, path); GetOpenFile(io, fptr); + fptr->encs.ecflags |= ECONV_DEFAULT_NEWLINE_DECORATOR; fptr->stdio_file = f; return io; diff --git a/transcode.c b/transcode.c index 4d32cf705a..5f7f856a33 100644 --- a/transcode.c +++ b/transcode.c @@ -2533,7 +2533,7 @@ rb_econv_prepare_options(VALUE opthash, VALUE *opts, int ecflags) if (NIL_P(opthash)) { *opts = Qnil; - return 0; + return ecflags; } ecflags = econv_opts(opthash, ecflags); -- cgit v1.2.3