home *** CD-ROM | disk | FTP | other *** search
- $sgttyb_t = 'C4 S';
-
- sub cbreak {
- &set_cbreak(1);
- }
-
- sub cooked {
- &set_cbreak(0);
- }
-
- sub set_cbreak {
- local($on) = @_;
-
- if (!defined &source) {
- do 'source.pl' || die "set_cbreak: can't do \"source.pl\": $!";
- }
-
- &source('sizeof.h') unless defined %sizeof;
- &source('sys/ioctl.h') unless defined &_IOCTL_;
-
- ioctl(STDIN,&TIOCGETP,$sgttyb)
- || die "Can't ioctl TIOCGETP: $!";
-
- @ary = unpack($sgttyb_t,$sgttyb);
- if ($on) {
- $ary[4] |= &CBREAK;
- $ary[4] &= ~&ECHO;
- } else {
- $ary[4] &= ~&CBREAK;
- $ary[4] |= &ECHO;
- }
- $sgttyb = pack($sgttyb_t,@ary);
- ioctl(STDIN,&TIOCSETP,$sgttyb)
- || die "Can't ioctl TIOCSETP: $!";
-
- }
-
- 1;
-