Skip to content
Browse files

console.c: default by stty raw

* ext/io/console/console.c (rawmode_opt): use default values by `stty
  raw`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
1 parent e29e4b5 commit 490f1fc00979b6fb2cd45bf01544e79e9d9ea66c @nobu nobu committed Feb 5, 2013
Showing with 24 additions and 8 deletions.
  1. +5 −0 ChangeLog
  2. +2 −1 ext/io/console/console.c
  3. +17 −7 test/io/console/test_io_console.rb
View
5 ChangeLog
@@ -1,3 +1,8 @@
+Tue Feb 5 13:27:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (rawmode_opt): use default values by `stty
+ raw`.
+
Tue Feb 5 12:50:47 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
* range.c: Use div instead of / for bsearch
View
3 ext/io/console/console.c
@@ -105,7 +105,8 @@ rawmode_opt(int argc, VALUE *argv, rawmode_arg_t *opts)
if (!NIL_P(vopts)) {
VALUE vmin = rb_hash_aref(vopts, ID2SYM(rb_intern("min")));
VALUE vtime = rb_hash_aref(vopts, ID2SYM(rb_intern("time")));
- opts->vmin = 0;
+ /* default values by `stty raw` */
+ opts->vmin = 1;
opts->vtime = 0;
if (!NIL_P(vmin)) {
opts->vmin = NUM2INT(vmin);
View
24 test/io/console/test_io_console.rb
@@ -29,14 +29,21 @@ def test_raw_minchar
len = 0
th = nil
helper {|m, s|
+ assert_equal([nil, 0], [s.getch(min: 0), len])
+ main = Thread.current
+ go = false
th = Thread.start {
- m.print("a")
len += 1
- sleep 2
- m.print("1234567890")
+ m.print("a")
+ m.flush
+ sleep 0.01 until go and main.stop?
len += 10
+ m.print("1234567890")
+ m.flush
}
assert_equal(["a", 1], [s.getch(min: 1), len])
+ go = true
+ assert_equal(["1", 11], [s.getch, len])
}
ensure
th.kill if th and th.alive?
@@ -46,12 +53,15 @@ def test_raw_timeout
len = 0
th = nil
helper {|m, s|
+ assert_equal([nil, 0], [s.getch(min: 0, time: 0.1), len])
+ main = Thread.current
th = Thread.start {
- sleep 2
- m.print("a")
- len += 1
+ sleep 0.01 until main.stop?
+ len += 2
+ m.print("ab")
}
- assert_equal([nil, 0], [s.getch(time: 0.1), len])
+ assert_equal(["a", 2], [s.getch(min: 1, time: 1), len])
+ assert_equal(["b", 2], [s.getch(time: 1), len])
}
ensure
th.kill if th and th.alive?

0 comments on commit 490f1fc

Please sign in to comment.
Something went wrong with that request. Please try again.