mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
a8c748d277
a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>. [ruby-dev:30713] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
36 lines
564 B
Ruby
36 lines
564 B
Ruby
# ioctl example works on Sun
|
|
|
|
CBREAK = 0x00000002
|
|
ECHO = 0x00000008
|
|
TIOCGETP = 0x40067408
|
|
TIOCSETP = 0x80067409
|
|
|
|
def cbreak ()
|
|
set_cbreak(true)
|
|
end
|
|
|
|
def cooked ()
|
|
set_cbreak(false)
|
|
end
|
|
|
|
def set_cbreak (on)
|
|
tty = "\0" * 256
|
|
STDIN.ioctl(TIOCGETP, tty)
|
|
ttys = tty.unpack("C4 S")
|
|
if on
|
|
ttys[4] |= CBREAK
|
|
ttys[4] &= ~ECHO
|
|
else
|
|
ttys[4] &= ~CBREAK
|
|
ttys[4] |= ECHO
|
|
end
|
|
tty = ttys.pack("C4 S")
|
|
STDIN.ioctl(TIOCSETP, tty)
|
|
end
|
|
cbreak();
|
|
|
|
print("this is no-echo line: ");
|
|
readline().print
|
|
cooked();
|
|
print("this is echo line: ");
|
|
readline()
|