|
merge revision(s) 33200,33662,33666,33770,33937,33944,33946,33981,34043,
|
|
34045,34132:
|
|
|
|
* io.c (rb_sys_fail_path): move the definition.
|
|
Move above for using it in set_binary_mode_with_seek_cur().
|
|
|
|
* io.c (set_binary_mode_with_seek_cur): fix improper seek cursor.
|
|
Seeking file cursor with setting binary mode has possibility to
|
|
cause infinite loop. Fixed the bug and refined error handling.,
|
|
Introduced at r34043.
|
|
|
|
And cleanups as below.
|
|
Remove unnecessary parentheses of `fptr`.
|
|
Use return value of setmode().
|
|
|
|
* test/ruby/test_io_m17n.rb
|
|
(TestIO_M17N#test_seek_with_setting_binmode): add a test for above.
|
|
[ruby-core:41671] [Bug #5714]
|
|
|
|
* test/ruby/test_io_m17n.rb
|
|
(TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
|
|
|
|
* win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
|
|
|
|
* win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
|
|
|
|
* io.c (set_binary_mode_with_seek_cur): new function to replace
|
|
SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
|
|
fd and take care of LF in rbuf.
|
|
|
|
* io.c (do_writeconv): set text mode when needed.
|
|
|
|
* io.c (io_read): need to change the mode of the IO to binmode
|
|
temporally when the length for IO#read, because IO#read with length
|
|
must behave so.
|
|
|
|
* test/ruby/test_io_m17n.rb (TestIO_M17N#test_{read_with_length,
|
|
read_with_length_binmode,get[cs]_and_read_with_binmode,
|
|
read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
|
|
above changes.
|
|
|
|
all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
|
|
[Feature #5714]
|
|
|
|
* test/rexml/test_order.rb (OrderTester#test_more_ordering): use
|
|
GZip::GzReader.open instead of GZip::GzReader.new with File.new.
|
|
fixed a test error on Windows introduced at r33946.
|
|
|
|
* ext/zlib/zlib.c (rb_gzreader_initialize): revert a part of r33937.
|
|
1st, to change the mode of an IO is very sensitive problem, so
|
|
the maintainer of this library should judge it.
|
|
2nd, usually Zlib::GzReader.new is not called directly. #initialize
|
|
is called via .open, and in the method the I/O is opened in binary
|
|
mode, so there is no problem without changing the mode in #initialize.
|
|
|
|
* ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
|
|
under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
|
|
[Feature #5562]
|
|
|
|
* include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
|
|
decorator.
|
|
|
|
* io.c (rb_cloexec_fcntl_dupfd): Introduce NEED_READCONV and
|
|
NEED_WRITECONV to replace universal newline decorator by CRLF only
|
|
when required to improve file reading and writing under Windows.
|
|
Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
|
|
* io.c (do_writeconv): adjust binary mode if required.
|
|
* io.c (read_all, appendline, swallow, rb_io_getline_1): ditto.
|
|
* io.c (io_getc, rb_io_each_codepoint, rb_io_ungetc): ditto.
|
|
* io.c (rb_io_binmode, rb_io_ascii8bit_binmode): ditto.
|
|
* io.c (rb_io_extract_modeenc, rb_sysopen): ditto.
|
|
* io.c (pipe_open, prep_stdio, io_encoding_set): ditto.
|
|
* io.c (rb_io_s_pipe, copy_stream_body): ditto.
|
|
|
|
* test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
|
|
binary mode.
|
|
|
|
* win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
|
|
initialization.
|
|
* win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
|
|
|
|
* io.c (argf_next_argv): wrong timing of setting ecflags.
|
|
fixed the failure of TestArgf#test_textmode introduced at r33662.
|
|
|
|
* include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
|
|
ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
|
|
|
|
* io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
|
|
set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
|
|
if the flag is available.
|
|
|
|
* io.c (make_writeconv): drop decorators for reading.
|
|
|
|
* io.c (make_readconv): drop decorators for writing.
|
|
|
|
* io.c (do_writeconv): existing writeconv is not the condition to raise
|
|
ArgumentError. should check textmode or not.
|
|
|
|
* test/ruby/test_io_m17n.rb
|
|
(TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
|
|
changes.
|
|
|
|
* transcode.c: enabled econv newline option.
|