home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / rbemx144.zip / ruby-1.4.4 / sample / cbreak.rb < prev    next >
Text File  |  1998-01-16  |  564b  |  37 lines

  1. # ioctl example works on Sun
  2.  
  3. CBREAK = 0x00000002
  4. ECHO = 0x00000008
  5. TIOCGETP = 0x40067408
  6. TIOCSETP = 0x80067409
  7.  
  8. def cbreak ()
  9.   set_cbreak(TRUE)
  10. end
  11.  
  12. def cooked ()
  13.   set_cbreak(FALSE)
  14. end
  15.  
  16. def set_cbreak (on)
  17.   tty = "\0" * 256
  18.   STDIN.ioctl(TIOCGETP, tty)
  19.   ttys = tty.unpack("C4 S")
  20.   if on
  21.     ttys[4] |= CBREAK
  22.     ttys[4] &= ~ECHO
  23.   else
  24.     ttys[4] &= ~CBREAK
  25.     ttys[4] |= ECHO
  26.   end
  27.   tty = ttys.pack("C4 S")
  28.   STDIN.ioctl(TIOCSETP, tty)
  29. end
  30. cbreak();
  31.  
  32. print("this is no-echo line: ");
  33. readline().print
  34. cooked();
  35. print("this is echo line: ");
  36. readline()
  37.