aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-02 12:11:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-09-02 12:11:17 +0000
commit7dc7da3d86bed37d1c9ec7331b45b418746ce65d (patch)
tree3336a76779a5986a240d30045ff1fef5a4282857
parent45fffaeac83cff2e5e09fbf34d39033f65c0784d (diff)
downloadruby-7dc7da3d86bed37d1c9ec7331b45b418746ce65d.tar.gz
* 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
-rw-r--r--ChangeLog8
-rw-r--r--io.c5
-rw-r--r--transcode.c2
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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);