ruby-changes:3006
From: ko1@a...
Date: 23 Dec 2007 02:28:43 +0900
Subject: [ruby-changes:3006] matz - Ruby:r14498 (trunk): * io.c (rb_io_mode_enc): do not set encoding unless explicitly
matz 2007-12-23 02:28:20 +0900 (Sun, 23 Dec 2007) New Revision: 14498 Modified files: trunk/ChangeLog trunk/io.c trunk/version.h Log: * io.c (rb_io_mode_enc): do not set encoding unless explicitly specified. * io.c (rb_io_check_readable): fill fptr->enc by default_external if it's empty. * io.c (io_enc_str): fptr->enc is always set for reading IO (by rb_io_check_readable(fptr)). http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=14498&r2=14497 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14498&r2=14497 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/io.c?r1=14498&r2=14497 Index: ChangeLog =================================================================== --- ChangeLog (revision 14497) +++ ChangeLog (revision 14498) @@ -1,3 +1,14 @@ +Sun Dec 23 01:56:18 2007 Yukihiro Matsumoto <matz@r...> + + * io.c (rb_io_mode_enc): do not set encoding unless explicitly + specified. + + * io.c (rb_io_check_readable): fill fptr->enc by default_external + if it's empty. + + * io.c (io_enc_str): fptr->enc is always set for reading IO (by + rb_io_check_readable(fptr)). + Sun Dec 23 01:18:06 2007 David Flanagan <david@d...> * io.c, io.h: temporary patch to partially implement Index: io.c =================================================================== --- io.c (revision 14497) +++ io.c (revision 14498) @@ -347,8 +347,10 @@ if (fptr->wbuf_len) { io_fflush(fptr); } - if (!fptr->enc && fptr->fd == 0) { - fptr->enc = rb_default_external_encoding(); + if (!fptr->enc) { + fptr->enc = (fptr->fd == 0) + ? rb_default_external_encoding() + : rb_ascii_encoding(); } } @@ -627,7 +629,7 @@ * the strings encoding then we must transcode before writing. * We must also transcode if two encodings were specified */ - if (fptr->enc && (fptr->enc2 || fptr->enc != rb_enc_get(str))) { + if (fptr->enc) { /* transcode str before output */ /* the methods in transcode.c are static, so call indirectly */ /* Can't use encode! because puts writes a frozen newline */ @@ -1298,19 +1300,17 @@ io_enc_str(VALUE str, rb_io_t *fptr) { OBJ_TAINT(str); - if (fptr->enc) { - if (fptr->enc2) { - /* two encodings, so transcode from enc2 to enc */ - /* the methods in transcode.c are static, so call indirectly */ - str = rb_funcall(str, id_encode, 2, - rb_enc_from_encoding(fptr->enc2), - rb_enc_from_encoding(fptr->enc)); - } - else { - /* just one encoding, so associate it with the string */ - rb_enc_associate(str, fptr->enc); - } + if (fptr->enc2) { + /* two encodings, so transcode from enc2 to enc */ + /* the methods in transcode.c are static, so call indirectly */ + str = rb_funcall(str, id_encode, 2, + rb_enc_from_encoding(fptr->enc2), + rb_enc_from_encoding(fptr->enc)); } + else { + /* just one encoding, so associate it with the string */ + rb_enc_associate(str, fptr->enc); + } return str; } @@ -2175,7 +2175,7 @@ GetOpenFile(io, fptr); rb_io_check_readable(fptr); - enc = fptr->enc ? fptr->enc : rb_default_external_encoding(); + enc = fptr->enc; READ_CHECK(fptr); if (io_fillbuf(fptr) < 0) { return Qnil; @@ -2327,7 +2327,7 @@ GetOpenFile(io, fptr); rb_io_check_readable(fptr); if (NIL_P(c)) return Qnil; - enc = fptr->enc ? fptr->enc : rb_default_external_encoding(); + enc = fptr->enc; if (FIXNUM_P(c)) { int cc = FIX2INT(c); char buf[16]; @@ -3123,12 +3123,6 @@ } } } - else if (fptr->mode & FMODE_BINMODE) { - fptr->enc = rb_ascii_encoding(); - } - else { - fptr->enc = rb_default_external_encoding(); - } } struct sysopen_struct { Index: version.h =================================================================== --- version.h (revision 14497) +++ version.h (revision 14498) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-12-22" +#define RUBY_RELEASE_DATE "2007-12-23" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20071222 +#define RUBY_RELEASE_CODE 20071223 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 12 -#define RUBY_RELEASE_DAY 22 +#define RUBY_RELEASE_DAY 23 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml