home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / perl / tutorial / eg / cbreak2.pl < prev    next >
Encoding:
Text File  |  1990-03-10  |  676 b   |  38 lines

  1. $sgttyb_t   = 'C4 S';
  2.  
  3. sub cbreak {
  4.     &set_cbreak(1);
  5. }
  6.  
  7. sub cooked {
  8.     &set_cbreak(0);
  9. }
  10.  
  11. sub set_cbreak {
  12.     local($on) = @_;
  13.  
  14.     if (!defined &source) {
  15.     do 'source.pl'  || die "set_cbreak: can't do \"source.pl\": $!";
  16.     } 
  17.  
  18.     &source('sys/ioctl.pl') unless defined $_IOCTL_;
  19.  
  20.     ioctl(STDIN,$TIOCGETP,$sgttyb)
  21.         || die "Can't ioctl TIOCGETP: $!";
  22.  
  23.     @ary = unpack($sgttyb_t,$sgttyb);
  24.     if ($on) {
  25.         $ary[4] |= $CBREAK;
  26.         $ary[4] &= ~$ECHO;
  27.     } else {
  28.         $ary[4] &= ~$CBREAK;
  29.         $ary[4] |= $ECHO;
  30.     }
  31.     $sgttyb = pack($sgttyb_t,@ary);
  32.     ioctl(STDIN,$TIOCSETP,$sgttyb)
  33.             || die "Can't ioctl TIOCSETP: $!";
  34.  
  35. }
  36.  
  37. 1;
  38.