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

ruby-changes:22868

From: nobu <ko1@a...>
Date: Tue, 6 Mar 2012 10:12:00 +0900 (JST)
Subject: [ruby-changes:22868] nobu:r34917 (trunk): * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK

nobu	2012-03-06 10:11:47 +0900 (Tue, 06 Mar 2012)

  New Revision: 34917

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34917

  Log:
    * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
      bits too.
    * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
      [ruby-dev:45309] [Bug #6116]
    * ext/io/console/console.c (console_raw): fix rdoc.
    * ext/io/console/console.c (console_set_echo): mentioned about
      platform dependency.

  Modified files:
    trunk/ChangeLog
    trunk/ext/io/console/console.c
    trunk/test/io/console/test_io_console.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 34916)
+++ ChangeLog	(revision 34917)
@@ -1,3 +1,16 @@
+Tue Mar  6 10:11:43 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
+	  bits too.
+
+	* ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
+	  [ruby-dev:45309] [Bug #6116]
+
+	* ext/io/console/console.c (console_raw): fix rdoc.
+
+	* ext/io/console/console.c (console_set_echo): mentioned about
+	  platform dependency.
+
 Tue Mar  6 07:18:10 2012  Aaron Patterson <aaron@t...>
 
 	* lib/xmlrpc/client.rb: switch net/http post2 calls to modern
Index: ext/io/console/console.c
===================================================================
--- ext/io/console/console.c	(revision 34916)
+++ ext/io/console/console.c	(revision 34917)
@@ -125,10 +125,11 @@
 {
 #ifdef HAVE_CFMAKERAW
     cfmakeraw(t);
+    t->c_lflag &= ~(ECHOE|ECHOK);
 #elif defined HAVE_TERMIOS_H || defined HAVE_TERMIO_H
     t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
     t->c_oflag &= ~OPOST;
-    t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
+    t->c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN);
     t->c_cflag &= ~(CSIZE|PARENB);
     t->c_cflag |= CS8;
 #elif defined HAVE_SGTTY_H
@@ -189,7 +190,7 @@
 echo_p(conmode *t)
 {
 #if defined HAVE_TERMIOS_H || defined HAVE_TERMIO_H
-    return (t->c_lflag & (ECHO | ECHOE | ECHOK | ECHONL)) != 0;
+    return (t->c_lflag & (ECHO | ECHONL)) != 0;
 #elif defined HAVE_SGTTY_H
     return (t->sg_flags & ECHO) != 0;
 #elif defined _WIN32
@@ -295,7 +296,7 @@
  *
  *   STDIN.raw(&:gets)
  *
- * will read and return a line with echo back and line editing.
+ * will read and return a line without echo back and line editing.
  *
  * You must require 'io/console' to use this method.
  */
@@ -419,6 +420,8 @@
  *   io.echo = flag
  *
  * Enables/disables echo back.
+ * On some platforms, all combinations of this flags and raw/cooked
+ * mode may not be valid.
  *
  * You must require 'io/console' to use this method.
  */
Index: test/io/console/test_io_console.rb
===================================================================
--- test/io/console/test_io_console.rb	(revision 34916)
+++ test/io/console/test_io_console.rb	(revision 34917)
@@ -7,14 +7,19 @@
 require_relative '../../ruby/envutil'
 
 class TestIO_Console < Test::Unit::TestCase
+  Bug6116 = '[ruby-dev:45309]'
+
   def test_raw
     helper {|m, s|
       s.print "abc\n"
       assert_equal("abc\r\n", m.gets)
+      assert_send([s, :echo?])
       s.raw {
+        assert_not_send([s, :echo?], Bug6116)
         s.print "def\n"
         assert_equal("def\n", m.gets)
       }
+      assert_send([s, :echo?])
       s.print "ghi\n"
       assert_equal("ghi\r\n", m.gets)
     }
@@ -22,14 +27,19 @@
 
   def test_cooked
     helper {|m, s|
+      assert_send([s, :echo?])
       s.raw {
         s.print "abc\n"
         assert_equal("abc\n", m.gets)
+        assert_not_send([s, :echo?], Bug6116)
         s.cooked {
+          assert_send([s, :echo?])
           s.print "def\n"
           assert_equal("def\r\n", m.gets)
         }
+        assert_not_send([s, :echo?], Bug6116)
       }
+      assert_send([s, :echo?])
       s.print "ghi\n"
       assert_equal("ghi\r\n", m.gets)
     }
@@ -37,7 +47,7 @@
 
   def test_echo
     helper {|m, s|
-      assert(s.echo?)
+      assert_send([s, :echo?])
       m.print "a"
       assert_equal("a", m.readpartial(10))
     }
@@ -46,7 +56,7 @@
   def test_noecho
     helper {|m, s|
       s.noecho {
-	assert(!s.echo?)
+	assert_not_send([s, :echo?])
 	m.print "a"
 	sleep 0.1
       }
@@ -57,7 +67,7 @@
 
   def test_noecho2
     helper {|m, s|
-      assert(s.echo?)
+      assert_send([s, :echo?])
       m.print "a\n"
       sleep 0.1
       s.print "b\n"
@@ -65,13 +75,13 @@
       assert_equal("a\r\nb\r\n", m.readpartial(10))
       assert_equal("a\n", s.readpartial(10))
       s.noecho {
-        assert(!s.echo?)
+        assert_not_send([s, :echo?])
         m.print "a\n"
         s.print "b\n"
         assert_equal("b\r\n", m.readpartial(10))
         assert_equal("a\n", s.readpartial(10))
       }
-      assert(s.echo?)
+      assert_send([s, :echo?])
       m.print "a\n"
       sleep 0.1
       s.print "b\n"
@@ -83,7 +93,7 @@
 
   def test_setecho
     helper {|m, s|
-      assert(s.echo?)
+      assert_send([s, :echo?])
       s.echo = false
       m.print "a"
       sleep 0.1
@@ -95,7 +105,7 @@
 
   def test_setecho2
     helper {|m, s|
-      assert(s.echo?)
+      assert_send([s, :echo?])
       m.print "a\n"
       sleep 0.1
       s.print "b\n"
@@ -103,13 +113,13 @@
       assert_equal("a\r\nb\r\n", m.readpartial(10))
       assert_equal("a\n", s.readpartial(10))
       s.echo = false
-      assert(!s.echo?)
+      assert_not_send([s, :echo?])
       m.print "a\n"
       s.print "b\n"
       assert_equal("b\r\n", m.readpartial(10))
       assert_equal("a\n", s.readpartial(10))
       s.echo = true
-      assert(s.echo?)
+      assert_send([s, :echo?])
       m.print "a\n"
       sleep 0.1
       s.print "b\n"

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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