Project

General

Profile

Actions

Bug #6116

closed

IO#raw {|io| ...} で文字入力がエコーバックしない

Added by sho-h (Sho Hashimoto) about 12 years ago. Updated about 12 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-03-05 trunk 34909) [x86_64-linux]
Backport:
[ruby-dev:45309]

Description

以下のドキュメントにならって、IO#raw で gets したところ入力がエコーバックしませんでした。

Yields +self+ within raw mode.

STDIN.raw(&:gets)

will read and return a line with echo back and line editing.

一方、以下のようにしてみたところ、Debian squeeze だと 1.9.3-p125 と、r34909 では 6 行目の gets はエコーバックしました。

require "io/console"
STDIN.raw do |io|
p io.echo? # => true
p io.gets # エコーバックしない
io.echo = true
p io.gets # エコーバックする
io.echo = false
p io.gets # エコーバックしない
end

これを Windows 7 で 1.9.3-p125 で実行してみると、3 行目の echo? は false になり、4 行目の io.echo の代入で Errno::EINVAL になりました。

こんな使い方は普通しないかもしれないですね...

Actions #1

Updated by nobu (Nobuyoshi Nakada) about 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r34917.
Sho, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • 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.
Actions

Also available in: Atom PDF

Like0
Like0