ruby-changes:22877
From: nobu <ko1@a...>
Date: Tue, 6 Mar 2012 12:48:54 +0900 (JST)
Subject: [ruby-changes:22877] nobu:r34926 (ruby_1_9_3): merge revision(s) 34917:
nobu 2012-03-06 12:48:34 +0900 (Tue, 06 Mar 2012) New Revision: 34926 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34926 Log: merge revision(s) 34917: * 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: branches/ruby_1_9_3/ChangeLog branches/ruby_1_9_3/ext/io/console/console.c branches/ruby_1_9_3/test/io/console/test_io_console.rb branches/ruby_1_9_3/version.h Index: ruby_1_9_3/ChangeLog =================================================================== --- ruby_1_9_3/ChangeLog (revision 34925) +++ ruby_1_9_3/ChangeLog (revision 34926) @@ -1,3 +1,16 @@ +Tue Mar 6 12:48:08 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 12:40:08 2012 Nobuyoshi Nakada <nobu@r...> * ext/io/console/console.c (console_raw, console_set_raw) Index: ruby_1_9_3/ext/io/console/console.c =================================================================== --- ruby_1_9_3/ext/io/console/console.c (revision 34925) +++ ruby_1_9_3/ext/io/console/console.c (revision 34926) @@ -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. */ @@ -341,6 +342,8 @@ * STDIN.cooked(&:gets) * * will read and return a line with echo back and line editing. + * + * You must require 'io/console' to use this method. */ static VALUE console_cooked(VALUE io) @@ -355,6 +358,8 @@ * Enables cooked mode. * * If the terminal mode needs to be back, use io.cooked { ... }. + * + * You must require 'io/console' to use this method. */ static VALUE console_set_cooked(VALUE io) @@ -415,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: ruby_1_9_3/version.h =================================================================== --- ruby_1_9_3/version.h (revision 34925) +++ ruby_1_9_3/version.h (revision 34926) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.3" -#define RUBY_PATCHLEVEL 161 +#define RUBY_PATCHLEVEL 162 #define RUBY_RELEASE_DATE "2012-03-06" #define RUBY_RELEASE_YEAR 2012 Index: ruby_1_9_3/test/io/console/test_io_console.rb =================================================================== --- ruby_1_9_3/test/io/console/test_io_console.rb (revision 34925) +++ ruby_1_9_3/test/io/console/test_io_console.rb (revision 34926) @@ -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/