[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]