home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / perl / tutorial / eg / cbreak.pl < prev    next >
Encoding:
Text File  |  1990-03-10  |  726 b   |  39 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('sizeof.h')    unless defined %sizeof;
  19.     &source('sys/ioctl.h') unless defined &_IOCTL_;
  20.  
  21.     ioctl(STDIN,&TIOCGETP,$sgttyb)
  22.         || die "Can't ioctl TIOCGETP: $!";
  23.  
  24.     @ary = unpack($sgttyb_t,$sgttyb);
  25.     if ($on) {
  26.         $ary[4] |= &CBREAK;
  27.         $ary[4] &= ~&ECHO;
  28.     } else {
  29.         $ary[4] &= ~&CBREAK;
  30.         $ary[4] |= &ECHO;
  31.     }
  32.     $sgttyb = pack($sgttyb_t,@ary);
  33.     ioctl(STDIN,&TIOCSETP,$sgttyb)
  34.             || die "Can't ioctl TIOCSETP: $!";
  35.  
  36. }
  37.  
  38. 1;
  39.