termbuf
char termbuf[1024];
if (tgetent(termbuf, tname) == 1) {
termbuf[1023] = '\0';
tnamep = mklist(termbuf, tname);
struct termios termbuf, termbuf2; /* pty control structure */
(void) ioctl(pty, TIOCGETP, (char *)&termbuf.sg);
(void) ioctl(pty, TIOCGETC, (char *)&termbuf.tc);
(void) ioctl(pty, TIOCGLTC, (char *)&termbuf.ltc);
(void) ioctl(pty, TIOCGSTATE, (char *)&termbuf.state);
(void) tcgetattr(pty, &termbuf);
termbuf2 = termbuf;
if (len > sizeof(termbuf))
len = sizeof(termbuf);
memmove((char *)&termbuf, cp, len);
termbuf2 = termbuf;
if (memcmp((char *)&termbuf.sg, (char *)&termbuf2.sg,
sizeof(termbuf.sg)))
(void) ioctl(pty, TIOCSETN, (char *)&termbuf.sg);
if (memcmp((char *)&termbuf.tc, (char *)&termbuf2.tc,
sizeof(termbuf.tc)))
(void) ioctl(pty, TIOCSETC, (char *)&termbuf.tc);
if (memcmp((char *)&termbuf.ltc, (char *)&termbuf2.ltc,
sizeof(termbuf.ltc)))
(void) ioctl(pty, TIOCSLTC, (char *)&termbuf.ltc);
if (termbuf.lflags != termbuf2.lflags)
(void) ioctl(pty, TIOCLSET, (char *)&termbuf.lflags);
if (memcmp((char *)&termbuf, (char *)&termbuf2, sizeof(termbuf)))
(void) tcsetattr(pty, TCSANOW, &termbuf);
*valp = termbuf.tc.t_eofc;
*valpp = (cc_t *)&termbuf.tc.t_eofc;
*valp = termbuf.sg.sg_erase;
*valpp = (cc_t *)&termbuf.sg.sg_erase;
*valp = termbuf.sg.sg_kill;
*valpp = (cc_t *)&termbuf.sg.sg_kill;
*valp = termbuf.tc.t_intrc;
*valpp = (cc_t *)&termbuf.tc.t_intrc;
*valp = termbuf.tc.t_quitc;
*valpp = (cc_t *)&termbuf.tc.t_quitc;
*valp = termbuf.tc.t_startc;
*valpp = (cc_t *)&termbuf.tc.t_startc;
*valp = termbuf.tc.t_stopc;
*valpp = (cc_t *)&termbuf.tc.t_stopc;
*valp = termbuf.ltc.t_flushc;
*valpp = (cc_t *)&termbuf.ltc.t_flushc;
*valp = termbuf.ltc.t_suspc;
*valpp = (cc_t *)&termbuf.ltc.t_suspc;
*valp = termbuf.ltc.t_werasc;
*valpp = (cc_t *)&termbuf.ltc.t_werasc;
*valp = termbuf.ltc.t_rprntc;
*valpp = (cc_t *)&termbuf.ltc.t_rprntc;
*valp = termbuf.ltc.t_lnextc;
*valpp = (cc_t *)&termbuf.ltc.t_lnextc;
*valp = termbuf.tc.t_brkc;
*valpp = (cc_t *)&termbuf.ltc.t_lnextc;
#define setval(a, b) *valp = termbuf.c_cc[a]; \
*valpp = &termbuf.c_cc[a]; \
return(termbuf.state & TS_EXTPROC);
return(termbuf.c_lflag & EXTPROC);
termbuf.c_lflag |= EXTPROC;
termbuf.c_lflag &= ~EXTPROC;
return (termbuf.sg.sg_flags & ECHO);
return (termbuf.c_lflag & ECHO);
return(((termbuf.tc.t_startc) > 0 && (termbuf.tc.t_stopc) > 0) ? 1 : 0);
return((termbuf.c_iflag & IXON) ? 1 : 0);
return((termbuf.lflags & DECCTQ) ? 0 : 1);
return((termbuf.c_iflag & IXANY) ? 1 : 0);
termbuf.sg.sg_flags |= ECHO|CRMOD;
termbuf.sg.sg_flags &= ~(ECHO|CRMOD);
termbuf.c_lflag |= ECHO;
termbuf.c_lflag &= ~ECHO;
return(termbuf.sg.sg_flags & RAW);
return(!(termbuf.c_lflag & ICANON));
termbuf.sg.sg_flags |= RAW;
termbuf.sg.sg_flags &= ~RAW;
termbuf.c_lflag &= ~ICANON;
termbuf.c_lflag |= ICANON;
termbuf.lflags |= LPASS8;
termbuf.lflags &= ~LPASS8;
termbuf.c_iflag &= ~ISTRIP;
termbuf.c_iflag |= ISTRIP;
termbuf.lflags |= LLITOUT;
termbuf.lflags &= ~LLITOUT;
termbuf.c_cflag &= ~(CSIZE|PARENB);
termbuf.c_cflag |= CS8;
termbuf.c_oflag &= ~OPOST;
termbuf.c_cflag &= ~CSIZE;
termbuf.c_cflag |= CS7|PARENB;
termbuf.c_oflag |= OPOST;
return(termbuf.lflags & LPASS8);
return(!(termbuf.c_iflag & ISTRIP));
return(termbuf.lflags & LLITOUT);
return(!(termbuf.c_oflag&OPOST));
return(!(termbuf.sg.sg_flags & (CBREAK|RAW)));
return(termbuf.c_lflag & ICANON);
return(!(termbuf.sg.sg_flags&RAW));
return(termbuf.c_lflag & ISIG);
termbuf.sg.sg_flags &= ~CBREAK;
termbuf.sg.sg_flags |= CBREAK;
termbuf.c_lflag |= ICANON;
termbuf.c_lflag &= ~ICANON;
termbuf.c_lflag |= ISIG;
termbuf.c_lflag &= ~ISIG;
return (termbuf.sg.sg_flags & XTABS);
return (termbuf.c_oflag & OXTABS);
return ((termbuf.c_oflag & TABDLY) == TAB3);
termbuf.sg.sg_flags |= XTABS;
termbuf.sg.sg_flags &= ~XTABS;
termbuf.c_oflag |= OXTABS;
termbuf.c_oflag &= ~TABDLY;
termbuf.c_oflag |= TAB3;
termbuf.c_oflag &= ~OXTABS;
termbuf.c_oflag &= ~TABDLY;
termbuf.c_oflag |= TAB0;
return (!(termbuf.lflags & LCTLECH));
return (!(termbuf.c_lflag & ECHOCTL));
return (!(termbuf.c_lflag & TCTLECH));
termbuf.lflags &= ~LCTLECH;
termbuf.lflags |= LCTLECH;
termbuf.c_lflag &= ~ECHOCTL;
termbuf.c_lflag |= ECHOCTL;
termbuf.c_lflag &= ~TCTLECH;
termbuf.c_lflag |= TCTLECH;
return (termbuf.sg.sg_flags & CRMOD);
return (termbuf.c_iflag & ICRNL);
cfsetospeed(&termbuf, tp->value);
cfsetospeed(&termbuf, val);
cfsetispeed(&termbuf, tp->value);
cfsetispeed(&termbuf, val);
erase = termbuf.c_cc[VERASE];
termbuf.sg.sg_flags |= CRMOD|ANYP|ECHO|XTABS;
} termbuf, termbuf2;
termbuf.c_cc[VERASE] = erase;