diff options
author | Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | 1990-08-08 17:07:00 +0000 |
---|---|---|
committer | Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | 1990-08-08 17:07:00 +0000 |
commit | 8725079938ea1a29b3c5fc0c6bbda347bc3f7602 (patch) | |
tree | 31031e636a9fda1fcb603050ce6e06aa879f77a9 /h2pl/cbreak.pl | |
parent | 79220ce3ebd9c9ac4a99caf508dadef88c26a4e6 (diff) | |
download | perl-8725079938ea1a29b3c5fc0c6bbda347bc3f7602.tar.gz |
perl 3.0 patch #20 patch #19, continued
See patch #19.
Diffstat (limited to 'h2pl/cbreak.pl')
-rw-r--r-- | h2pl/cbreak.pl | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/h2pl/cbreak.pl b/h2pl/cbreak.pl new file mode 100644 index 0000000000..422185eb7b --- /dev/null +++ b/h2pl/cbreak.pl @@ -0,0 +1,34 @@ +$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; |