summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-27 21:06:59 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-27 21:06:59 +0000
commit9c48e5990720b575e1143a5a1ec5a88e53ba43c5 (patch)
tree7dd13ce23f1fb8e3de46f6b411d80fd4b614d679 /io.c
parent06911f90ce919479dc4242f4289abbe43703caa4 (diff)
* io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
mode. fixes #4619 * io.c (pipe_open): set universal newline decorator if needed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/io.c b/io.c
index 73a30cd305..328abc7ea8 100644
--- a/io.c
+++ b/io.c
@@ -4496,7 +4496,7 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
rb_io_ext_int_to_encs(NULL, NULL, &enc, &enc2);
if (NIL_P(vmode)) {
- fmode = FMODE_READABLE;
+ fmode = FMODE_READABLE | DEFAULT_TEXTMODE;
oflags = O_RDONLY;
}
else if (!NIL_P(intmode = rb_check_to_integer(vmode, "to_int"))) {
@@ -5249,6 +5249,9 @@ pipe_open(struct rb_exec_arg *eargp, VALUE prog, const char *modestr, int fmode,
if (convconfig) {
fptr->encs = *convconfig;
}
+ else if (NEED_NEWLINE_DECORATOR_ON_READ(fptr)) {
+ fptr->encs.ecflags |= ECONV_UNIVERSAL_NEWLINE_DECORATOR;
+ }
fptr->pid = pid;
if (0 <= write_fd) {
@@ -7248,7 +7251,7 @@ rb_f_backquote(VALUE obj, VALUE str)
rb_io_t *fptr;
SafeStringValue(str);
- port = pipe_open_s(str, "r", FMODE_READABLE, NULL);
+ port = pipe_open_s(str, "r", FMODE_READABLE|DEFAULT_TEXTMODE, NULL);
if (NIL_P(port)) return rb_str_new(0,0);
GetOpenFile(port, fptr);