ruby-changes:18084
From: tarui <ko1@a...>
Date: Tue, 7 Dec 2010 00:29:56 +0900 (JST)
Subject: [ruby-changes:18084] Ruby:r30104 (trunk): * win32/win32.c (rb_w32_read): fixed more for readline, and so on.
tarui 2010-12-07 00:29:45 +0900 (Tue, 07 Dec 2010) New Revision: 30104 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30104 Log: * win32/win32.c (rb_w32_read): fixed more for readline, and so on. [ruby-core:33511] Modified files: trunk/ChangeLog trunk/win32/win32.c Index: ChangeLog =================================================================== --- ChangeLog (revision 30103) +++ ChangeLog (revision 30104) @@ -1,3 +1,8 @@ +Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@r...> + + * win32/win32.c (rb_w32_read): fixed more for readline, + and so on. [ruby-core:33511] + Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@r...> * test/mkmf/base.rb (TestMkmf#setup): run quietly. Index: win32/win32.c =================================================================== --- win32/win32.c (revision 30103) +++ win32/win32.c (revision 30104) @@ -5028,6 +5028,7 @@ size_t ret; OVERLAPPED ol, *pol = NULL; BOOL isconsole; + BOOL islineinput; int start = 0; if (is_socket(sock)) @@ -5052,6 +5053,11 @@ ret = 0; isconsole = is_console(_osfhnd(fd)); + if(isconsole){ + DWORD mode; + GetConsoleMode((HANDLE)_osfhnd(fd),&mode); + islineinput = (mode & ENABLE_LINE_INPUT) != 0; + } retry: /* get rid of console reading bug */ if (isconsole) { @@ -5154,7 +5160,7 @@ ret += read; if (read >= len) { buf = (char *)buf + read; - if (!(isconsole && len == 1 && *((char *)buf - 1) == '\n') && size > 0) + if (!(isconsole && len == 1 && (!islineinput || *((char *)buf - 1) == '\n')) && size > 0) goto retry; } if (read == 0) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/