ttystate
fix_term = ttystate.ttyflags;
if (ttystate.ttyflags & TTY_CBREAK_ON) {
if (ttystate.ttyflags & TTY_ECHO_OFF) {
if (ttystate.ttyflags == 0) {
if ((ttystate.ttyfile = open("/dev/tty",
if (tcgetattr(ttystate.ttyfile, &ttystate.ttystate) < 0) {
ttystate.ttystate.c_lflag &= ~ECHO;
if (tcsetattr(ttystate.ttyfile, TCSANOW, &ttystate.ttystate) < 0) {
ttystate.ttyflags |= TTY_ECHO_OFF;
ttystate.ttystate.c_lflag |= ECHO;
if (tcsetattr(ttystate.ttyfile, TCSANOW, &ttystate.ttystate) < 0) {
ttystate.ttyflags &= ~TTY_ECHO_OFF;
if (ttystate.ttyflags == 0) {
(void) close(ttystate.ttyfile);
if (ttystate.ttyflags == 0) {
if ((ttystate.ttyfile = open("/dev/tty",
if (tcgetattr(ttystate.ttyfile, &ttystate.ttystate) < 0) {
ttystate.vmin = ttystate.ttystate.c_cc[VMIN];
ttystate.vtime = ttystate.ttystate.c_cc[VTIME];
ttystate.ttystate.c_lflag &= ~ICANON;
ttystate.ttystate.c_cc[VMIN] = 1;
ttystate.ttystate.c_cc[VTIME] = 0;
if (tcsetattr(ttystate.ttyfile, TCSANOW, &ttystate.ttystate) < 0) {
ttystate.ttyflags |= TTY_CBREAK_ON;
struct ttystate ttystate; /* tty info */
ttystate.ttystate.c_lflag |= ICANON;
ttystate.ttystate.c_cc[VMIN] = ttystate.vmin;
ttystate.ttystate.c_cc[VTIME] = ttystate.vtime;
if (tcsetattr(ttystate.ttyfile, TCSANOW, &ttystate.ttystate) < 0) {
ttystate.ttyflags &= ~TTY_CBREAK_ON;
if (ttystate.ttyflags == 0) {
(void) close(ttystate.ttyfile);
struct termios ttystate; /* buffer for ioctls */