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