$sgttyb_t
=
'C4 S'
;
sub
cbreak {
&set_cbreak
(1);
}
sub
cooked {
&set_cbreak
(0);
}
sub
set_cbreak {
local
(
$on
) =
@_
;
require
'sizeof.ph'
;
require
'./sys/ioctl.ph'
;
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;