mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* win32/win32.c (rb_w32_read): fixed more for readline, and so on. [ruby-core:33511]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
03693cd590
commit
88ab39f6ab
2 changed files with 12 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
|
||||
|
||||
* 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@ruby-lang.org>
|
||||
|
||||
* test/mkmf/base.rb (TestMkmf#setup): run quietly.
|
||||
|
|
|
@ -5028,6 +5028,7 @@ rb_w32_read(int fd, void *buf, size_t size)
|
|||
size_t ret;
|
||||
OVERLAPPED ol, *pol = NULL;
|
||||
BOOL isconsole;
|
||||
BOOL islineinput;
|
||||
int start = 0;
|
||||
|
||||
if (is_socket(sock))
|
||||
|
@ -5052,6 +5053,11 @@ rb_w32_read(int fd, void *buf, size_t size)
|
|||
|
||||
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 @@ rb_w32_read(int fd, void *buf, size_t size)
|
|||
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)
|
||||
|
|
Loading…
Add table
Reference in a new issue