Lines Matching refs:tp

442 					ldtermstd_state_t *tp);
669 ldtermstd_state_t *tp;
680 tp = (ldtermstd_state_t *)kmem_zalloc(sizeof (ldtermstd_state_t),
690 tp->t_modes = *termiosp;
691 tp->t_amodes = *termiosp;
699 bzero(&tp->t_dmodes, sizeof (struct termios));
701 tp->t_state = 0;
703 tp->t_line = 0;
704 tp->t_col = 0;
706 tp->t_rocount = 0;
707 tp->t_rocol = 0;
709 tp->t_message = NULL;
710 tp->t_endmsg = NULL;
711 tp->t_msglen = 0;
712 tp->t_rd_request = 0;
714 tp->t_echomp = NULL;
715 tp->t_iocid = 0;
716 tp->t_wbufcid = 0;
717 tp->t_vtid = 0;
719 q->q_ptr = (caddr_t)tp;
720 WR(q)->q_ptr = (caddr_t)tp;
724 tp->t_codeset = tp->t_eucleft = tp->t_eucign = tp->t_scratch_len = 0;
725 bzero(&tp->eucwioc, EUCSIZE);
726 tp->eucwioc.eucw[0] = 1; /* ASCII mem & screen width */
727 tp->eucwioc.scrw[0] = 1;
728 tp->t_maxeuc = 1; /* the max len in bytes of an EUC char */
729 tp->t_eucp = NULL;
730 tp->t_eucp_mp = NULL;
731 tp->t_eucwarn = 0; /* no bad chars seen yet */
733 tp->t_csdata = default_cs_data;
734 tp->t_csmethods = cs_methods[LDTERM_CS_TYPE_EUC];
757 tp->t_drainmsg = qryp;
782 tp->t_closeopts = bp;
808 freemsg(tp->t_closeopts);
809 freemsg(tp->t_drainmsg);
811 kmem_free(tp, sizeof (ldtermstd_state_t));
817 ldtermstd_state_t *tp;
826 ctp->tp->t_state &= ~TS_IOCWAIT;
833 ldtermstd_state_t *tp = (ldtermstd_state_t *)q->q_ptr;
841 tp->t_state |= TS_CLOSE;
842 if (tp->t_vtid != 0)
843 (void) quntimeout(q, tp->t_vtid);
844 tp->t_vtid = 0;
849 if (tp->t_wbufcid != 0)
850 qunbufcall(q, tp->t_wbufcid);
857 bp = tp->t_closeopts;
866 freemsg(tp->t_drainmsg);
867 } else if ((bp = tp->t_drainmsg) != NULL) {
880 tp->t_state |= TS_IOCWAIT;
881 tp->t_iocid = iocb->ioc_id;
892 cltimer.tp = tp;
902 while (tp->t_state & TS_IOCWAIT) {
917 freemsg(tp->t_message);
918 freemsg(tp->t_eucp_mp);
921 if (tp->t_csdata.locale_name != NULL)
922 kmem_free(tp->t_csdata.locale_name,
923 strlen(tp->t_csdata.locale_name) + 1);
924 kmem_free(tp, sizeof (ldtermstd_state_t));
936 ldtermstd_state_t *tp;
947 tp = (ldtermstd_state_t *)q->q_ptr;
954 (tp->t_state & (TS_CLOSE|TS_IOCWAIT)) == (TS_CLOSE|TS_IOCWAIT)) {
957 if (iocp->ioc_id == tp->t_iocid) {
958 tp->t_state &= ~TS_IOCWAIT;
999 if (!(tp->t_amodes.c_iflag & IGNPAR)) {
1001 if (tp->t_amodes.c_iflag & PARMRK) {
1036 if (!(tp->t_amodes.c_iflag & IGNBRK)) {
1037 if (tp->t_amodes.c_iflag & BRKINT) {
1040 } else if (tp->t_amodes.c_iflag & PARMRK) {
1104 bcopy(emodes, &tp->t_dmodes,
1106 ldterm_adjust_modes(tp);
1114 tp->t_state |= TS_NOCANON;
1120 if (tp->t_message != NULL) {
1121 freemsg(tp->t_message);
1122 tp->t_message = NULL;
1123 tp->t_endmsg = NULL;
1124 tp->t_msglen = 0;
1125 tp->t_rocount = 0;
1126 tp->t_rocol = 0;
1127 if (tp->t_state & TS_MEUC) {
1128 ASSERT(tp->t_eucp_mp);
1129 tp->t_eucp = tp->t_eucp_mp->b_rptr;
1130 tp->t_codeset = 0;
1131 tp->t_eucleft = 0;
1137 tp->t_state &= ~TS_NOCANON;
1143 freemsg(tp->t_drainmsg);
1144 tp->t_drainmsg = NULL;
1160 if ((tp->t_state & TS_ISPTSTTY) && (*mp->b_rptr & FLUSHBAND))
1168 freemsg(tp->t_message);
1169 tp->t_message = NULL;
1170 tp->t_endmsg = NULL;
1171 tp->t_msglen = 0;
1172 tp->t_rocount = 0;
1173 tp->t_rocol = 0;
1174 if (tp->t_state & TS_MEUC) { /* EUC multi-byte */
1175 ASSERT(tp->t_eucp_mp);
1176 tp->t_eucp = tp->t_eucp_mp->b_rptr;
1183 if ((tp->t_modes.c_iflag & IXOFF) &&
1184 (tp->t_state & TS_TBLOCK) &&
1185 !(tp->t_state & TS_IFBLOCK) && q->q_count <= TTXOLO) {
1186 tp->t_state &= ~TS_TBLOCK;
1201 if ((tp->t_modes.c_iflag & IXOFF) && (tp->t_state & TS_TBLOCK) &&
1202 !(tp->t_state & TS_IFBLOCK) && q->q_count <= TTXOLO) {
1203 tp->t_state &= ~TS_TBLOCK;
1212 if (tp->t_state & TS_NOCANON) {
1221 if (tp->t_modes.c_iflag & (INLCR|IGNCR|ICRNL|IUCLC|IXON) ||
1222 tp->t_modes.c_lflag & (ISIG|ICANON)) {
1231 if (tp->t_modes.c_iflag & ISTRIP)
1239 if (tp->t_state & TS_PLNCH) {
1240 tp->t_state &= ~TS_PLNCH;
1241 tp->t_modes.c_lflag &= ~FLUSHO;
1254 if (tp->t_modes.c_iflag & IXON &&
1255 tp->t_state & TS_TTSTOP &&
1256 tp->t_modes.c_lflag & IEXTEN &&
1257 tp->t_modes.c_iflag & IXANY) {
1258 tp->t_state &=
1262 tp->t_modes.c_lflag &= ~FLUSHO;
1270 if (tp->t_modes.c_iflag & IXON) {
1271 if (tp->t_state & TS_TTSTOP) {
1273 tp->t_modes.c_cc[VSTART] ||
1274 (tp->t_modes.c_lflag &
1276 tp->t_modes.c_iflag &
1278 tp->t_state &=
1286 tp->t_modes.c_cc[VSTOP]) {
1287 tp->t_state |=
1293 if (c == tp->t_modes.c_cc[VSTOP] ||
1294 c == tp->t_modes.c_cc[VSTART])
1304 if (tp->t_modes.c_lflag & IEXTEN) {
1305 if (c == tp->t_modes.c_cc[VLNEXT]) {
1314 tp->t_state |= TS_PLNCH;
1315 tp->t_modes.c_lflag &= ~FLUSHO;
1319 if (c == tp->t_modes.c_cc[VDISCARD]) {
1320 ldterm_flush_output(c, wrq, tp);
1324 tp->t_modes.c_lflag &= ~FLUSHO;
1330 if (tp->t_modes.c_lflag & ISIG) {
1331 if (c == tp->t_modes.c_cc[VINTR]) {
1336 if (c == tp->t_modes.c_cc[VQUIT]) {
1341 if (c == tp->t_modes.c_cc[VSWTCH]) {
1348 if (c == tp->t_modes.c_cc[VSUSP]) {
1353 if ((tp->t_modes.c_lflag & IEXTEN) &&
1354 (c == tp->t_modes.c_cc[VDSUSP])) {
1365 if (c == tp->t_modes.c_cc[VSTATUS]) {
1376 if (tp->t_modes.c_iflag & IGNCR)
1378 if (tp->t_modes.c_iflag & ICRNL)
1386 tp->t_modes.c_iflag & INLCR)
1394 if (tp->t_modes.c_iflag & IUCLC &&
1419 if (tp->t_modes.c_iflag & ISTRIP) {
1423 tp->t_modes.c_lflag &= ~FLUSHO;
1431 * tp->t_state & TS_RESCAN is true.
1435 (tp->t_state & TS_RESCAN))
1450 if ((tp->t_modes.c_iflag & IXOFF) && !(tp->t_state & TS_TBLOCK) &&
1455 tp->t_state |= TS_TBLOCK;
1470 ldtermstd_state_t *tp;
1473 tp = (ldtermstd_state_t *)q->q_ptr;
1475 if (tp->t_state & TS_RESCAN) {
1481 if (tp->t_message != NULL) {
1483 if (tp->t_msglen != 0)
1484 (void) putbq(q, tp->t_message);
1486 freemsg(tp->t_message);
1487 tp->t_message = NULL;
1488 tp->t_endmsg = NULL;
1489 tp->t_msglen = 0;
1491 if (tp->t_state & TS_MEUC) {
1492 ASSERT(tp->t_eucp_mp);
1493 tp->t_eucp = tp->t_eucp_mp->b_rptr;
1494 tp->t_codeset = 0;
1495 tp->t_eucleft = 0;
1497 tp->t_state &= ~TS_RESCAN;
1509 if ((tp->t_modes.c_iflag & IXOFF) && (tp->t_state & TS_TBLOCK) &&
1510 !(tp->t_state & TS_IFBLOCK) && q->q_count <= TTXOLO) {
1511 tp->t_state &= ~TS_TBLOCK;
1530 ldtermstd_state_t *tp;
1534 tp = (ldtermstd_state_t *)q->q_ptr;
1551 if (tp->t_modes.c_lflag & ECHO) {
1552 if ((tp->t_modes.c_iflag & IMAXBEL) &&
1553 (tp->t_modes.c_lflag & ICANON)) {
1556 ldterm_outchar(CTRL('g'), WR(q), 4, tp);
1583 freemsg(tp->t_message);
1584 tp->t_message = NULL;
1585 tp->t_endmsg = NULL;
1586 tp->t_msglen = 0;
1589 * tp->t_rd_request to NULL?
1591 tp->t_rocount = 0; /* if it hasn't been typed */
1592 tp->t_rocol = 0; /* it hasn't been echoed :-) */
1593 if (tp->t_state & TS_MEUC) {
1594 ASSERT(tp->t_eucp_mp);
1595 tp->t_eucp = tp->t_eucp_mp->b_rptr;
1602 if (tp->t_state & TS_TTSTOP) {
1603 tp->t_state &= ~(TS_TTSTOP|TS_OFBLOCK);
1653 if (tp->t_state & TS_NOCANON) {
1659 if ((bpt = newmsg(tp)) != NULL) {
1684 bpt, ebsize, q, tp, &dofree)) ==
1698 bpt = ldterm_dononcanon(bp, bpt, ebsize, q, tp);
1711 if (tp->t_echomp != NULL) {
1713 putnext(WR(q), tp->t_echomp);
1715 freemsg(tp->t_echomp);
1716 tp->t_echomp = NULL;
1732 ldtermstd_state_t *tp, int *dofreep)
1741 if (tp->t_state & TS_SLNCH)
1750 tp->t_state &= ~TS_QUOT;
1757 if ((tp->t_modes.c_lflag & IEXTEN) && c == tp->t_modes.c_cc[VLNEXT]) {
1758 if (tp->t_modes.c_lflag & ECHO)
1760 ebsize, tp);
1761 tp->t_state |= TS_SLNCH;
1771 if (c == tp->t_modes.c_cc[VERASE]) {
1772 if (tp->t_state & TS_QUOT) {
1777 ldterm_erase(wrq, ebsize, tp);
1778 bpt = tp->t_endmsg;
1781 if ((tp->t_state & TS_MEUC) && tp->t_msglen &&
1782 (*(tp->t_eucp - 1) != 1 &&
1783 *(tp->t_eucp - 1) <= UNKNOWN_WIDTH))
1784 ldterm_csi_erase(wrq, ebsize, tp);
1786 ldterm_erase(wrq, ebsize, tp);
1787 bpt = tp->t_endmsg;
1791 if ((tp->t_modes.c_lflag & IEXTEN) && c == tp->t_modes.c_cc[VWERASE]) {
1795 if (tp->t_state & TS_MEUC)
1796 ldterm_csi_werase(wrq, ebsize, tp);
1798 ldterm_werase(wrq, ebsize, tp);
1799 bpt = tp->t_endmsg;
1802 if (c == tp->t_modes.c_cc[VKILL]) {
1803 if (tp->t_state & TS_QUOT) {
1808 ldterm_erase(wrq, ebsize, tp);
1809 bpt = tp->t_endmsg;
1812 ldterm_kill(wrq, ebsize, tp);
1813 bpt = tp->t_endmsg;
1817 if ((tp->t_modes.c_lflag & IEXTEN) && c == tp->t_modes.c_cc[VREPRINT]) {
1818 ldterm_reprint(wrq, ebsize, tp);
1829 if (tp->t_state & TS_QUOT) {
1830 tp->t_state &= ~TS_QUOT;
1831 if (c == tp->t_modes.c_cc[VEOF]) {
1837 ldterm_erase(wrq, ebsize, tp);
1838 bpt = tp->t_endmsg;
1847 if ((tp->t_modes.c_lflag & XCASE) &&
1849 ldterm_erase(wrq, ebsize, tp);
1850 bpt = tp->t_endmsg;
1859 if (c == tp->t_modes.c_cc[VEOF]) {
1866 if ((tp->t_modes.c_lflag & ECHOCTL) &&
1867 (tp->t_modes.c_lflag & IEXTEN) &&
1868 (tp->t_modes.c_lflag & ECHO)) {
1869 i = ldterm_echo(c, wrq, ebsize, tp);
1871 ldterm_outchar('\b', wrq, ebsize, tp);
1876 ldterm_msg_upstream(q, tp);
1881 bpt = newmsg(tp);
1893 * tp->t_maxeuc from MAX_CANON before checking.
1898 if ((tp->t_msglen > ((MAX_CANON + 1) - (int)tp->t_maxeuc)) &&
1899 !((tp->t_state & TS_MEUC) && tp->t_eucleft)) {
1906 if (tp->t_modes.c_iflag & IMAXBEL) {
1908 ldterm_outchar(CTRL('g'), wrq, ebsize, tp);
1917 freemsg(tp->t_message);
1918 tp->t_message = NULL;
1919 tp->t_endmsg = NULL;
1920 tp->t_msglen = 0;
1921 tp->t_rocount = 0; /* if it hasn't been type */
1922 tp->t_rocol = 0; /* it hasn't been echoed :-) */
1923 if (tp->t_state & TS_MEUC) {
1924 ASSERT(tp->t_eucp_mp);
1925 tp->t_eucp = tp->t_eucp_mp->b_rptr;
1927 tp->t_state &= ~TS_SLNCH;
1928 bpt = newmsg(tp);
1947 tp->t_endmsg->b_cont = bpt;
1948 tp->t_endmsg = bpt;
1951 tp->t_msglen++; /* message length in BYTES */
1964 if (tp->t_state & TS_MEUC) {
1965 if (tp->t_eucleft) { /* if in a multi-byte char already */
1966 --tp->t_eucleft;
1967 *tp->t_eucp++ = 0; /* is a subsequent byte */
1969 ldterm_eucwarn(tp);
1972 *tp->t_eucp++ =
1973 tp->t_csmethods.ldterm_dispwidth(c,
1974 (void *)tp, tp->t_modes.c_lflag & ECHOCTL);
1975 tp->t_codeset = 0;
1977 *tp->t_eucp++ =
1978 tp->t_csmethods.ldterm_dispwidth(c,
1979 (void *)tp, tp->t_modes.c_lflag & ECHOCTL);
1980 tp->t_eucleft =
1981 tp->t_csmethods.ldterm_memwidth(c,
1982 (void *)tp) - 1;
1983 tp->t_codeset = ldterm_codeset(
1984 tp->t_csdata.codeset_type, c);
1997 if (!(tp->t_state & TS_SLNCH) &&
1998 (c == '\n' || (c != '\0' && (c == tp->t_modes.c_cc[VEOL] ||
1999 (c == tp->t_modes.c_cc[VEOL2]))))) {
2001 * || ((tp->t_modes.c_lflag & IEXTEN) && c ==
2002 * tp->t_modes.c_cc[VEOL2]))))) {
2009 ldterm_msg_upstream(q, tp);
2010 if (tp->t_state & TS_MEUC) {
2011 ASSERT(tp->t_eucp_mp);
2012 tp->t_eucp = tp->t_eucp_mp->b_rptr;
2014 if ((bpt = newmsg(tp)) == NULL)
2020 if (tp->t_rocount++ == 0)
2021 tp->t_rocol = tp->t_col;
2022 tp->t_state &= ~(TS_SLNCH|TS_QUOT);
2028 if ((c == '\\') && (tp->t_modes.c_lflag & IEXTEN) &&
2029 (!(tp->t_state & TS_MEUC) ||
2030 ((tp->t_state & TS_MEUC) && (!tp->t_eucleft))))
2031 tp->t_state |= TS_QUOT;
2037 if (tp->t_state & TS_ERASE) {
2038 tp->t_state &= ~TS_ERASE;
2039 if (tp->t_modes.c_lflag & ECHO)
2040 ldterm_outchar('/', wrq, ebsize, tp);
2042 if (tp->t_modes.c_lflag & ECHO)
2043 (void) ldterm_echo(c, wrq, ebsize, tp);
2049 if (c == '\n' && (tp->t_modes.c_lflag & ECHONL))
2050 ldterm_outchar(c, wrq, ebsize, tp);
2060 ldterm_unget(ldtermstd_state_t *tp)
2064 if ((bpt = tp->t_endmsg) == NULL)
2068 tp->t_msglen--; /* one fewer character */
2074 ldterm_trim(ldtermstd_state_t *tp)
2079 ASSERT(tp->t_endmsg);
2080 bpt = tp->t_endmsg;
2087 bp = tp->t_message;
2095 tp->t_endmsg = bp; /* point to that mblk */
2102 * Rubout one character from the current line being built for tp as
2103 * cleanly as possible. q is the write queue for tp. Most of this
2109 ldterm_rubout(uchar_t c, queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2116 if (!(tp->t_modes.c_lflag & ECHO))
2118 if (tp->t_modes.c_lflag & ECHOE) {
2122 if (tp->t_rocount == 0) {
2130 ldterm_reprint(q, ebsize, tp);
2139 if ((tp->t_modes.c_lflag & XCASE) &&
2142 tp);
2143 ldterm_outstring(RUBOUT1, 3, q, ebsize, tp);
2151 if ((tp->t_modes.c_lflag & ECHOCTL) &&
2152 (tp->t_modes.c_lflag & IEXTEN))
2154 tp);
2158 if (tp->t_rocount < tp->t_msglen) {
2167 ldterm_reprint(q, ebsize, tp);
2170 tabcols = ldterm_tabcols(tp);
2172 ldterm_outchar('\b', q, ebsize, tp);
2176 } else if ((tp->t_modes.c_lflag & ECHOPRT) &&
2177 (tp->t_modes.c_lflag & IEXTEN)) {
2181 if (!(tp->t_state & TS_ERASE)) {
2182 ldterm_outchar('\\', q, ebsize, tp);
2183 tp->t_state |= TS_ERASE;
2185 (void) ldterm_echo(c, q, ebsize, tp);
2187 (void) ldterm_echo(tp->t_modes.c_cc[VERASE], q, ebsize, tp);
2188 tp->t_rocount--; /* we "unechoed" this character */
2198 ldterm_tabcols(ldtermstd_state_t *tp)
2209 col = tp->t_rocol;
2215 if (tp->t_state & TS_MEUC) {
2216 ASSERT(tp->t_eucp_mp);
2217 bp = tp->t_message;
2219 readp = tp->t_eucp_mp->b_rptr;
2220 endp = tp->t_eucp;
2233 if (tp->t_modes.c_oflag & ONLRET)
2240 if (tp->t_csdata.codeset_type !=
2270 /* tp->t_eucp_mp contains wrong info?? */
2292 * tp->t_eucp_mp contains wrong
2302 bp = tp->t_message;
2307 if ((tp->t_modes.c_lflag & ECHOCTL) &&
2308 (tp->t_modes.c_lflag & IEXTEN)) {
2343 if (tp->t_modes.c_oflag & ONLRET)
2366 * "col" is now the column number before the tab. "tp->t_col"
2368 * erased the tab yet. Thus "tp->t_col - col" is the number
2372 col = tp->t_col - col;
2385 ldterm_erase(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2389 if ((c = ldterm_unget(tp)) != -1) {
2390 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2391 ldterm_trim(tp);
2392 if (tp->t_state & TS_MEUC)
2393 --tp->t_eucp;
2402 ldterm_werase(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2409 while ((c = ldterm_unget(tp)) == ' ' || c == '\t') {
2410 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2411 ldterm_trim(tp);
2418 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2419 ldterm_trim(tp);
2420 c = ldterm_unget(tp);
2427 tp->t_endmsg->b_wptr++; /* put 'c' back */
2428 tp->t_msglen++;
2448 ldterm_csi_werase(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2460 ip = tp->t_eucp - 1;
2464 while ((c = ldterm_unget(tp)) == ' ' || c == '\t') {
2465 tp->t_eucp--;
2466 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2467 ldterm_trim(tp);
2481 tp->t_eucp--;
2500 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2504 if (tp->t_csdata.codeset_type ==
2519 ldterm_rubout(' ', q, ebsize, tp);
2522 ldterm_trim(tp);
2524 c = ldterm_unget(tp);
2531 tp->t_endmsg->b_wptr++; /* put 'c' back */
2532 tp->t_msglen++;
2544 ldterm_kill(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2552 if ((tp->t_modes.c_lflag & ECHOKE) &&
2553 (tp->t_modes.c_lflag & IEXTEN) &&
2554 (tp->t_msglen == tp->t_rocount)) {
2555 if (tp->t_state & TS_MEUC) {
2556 ip = tp->t_eucp - 1;
2561 while ((c = ldterm_unget(tp)) != (-1)) {
2562 tp->t_eucp--;
2569 ebsize, tp);
2573 if (tp->t_csdata.codeset_type
2587 tp);
2590 ldterm_trim(tp);
2594 while ((c = ldterm_unget(tp)) != -1) {
2595 ldterm_rubout((unsigned char) c, q, ebsize, tp);
2596 ldterm_trim(tp);
2600 (void) ldterm_echo(tp->t_modes.c_cc[VKILL], q, ebsize, tp);
2601 if (tp->t_modes.c_lflag & ECHOK)
2602 (void) ldterm_echo('\n', q, ebsize, tp);
2603 while (ldterm_unget(tp) != -1) {
2604 if (tp->t_state & TS_MEUC)
2605 --tp->t_eucp;
2606 ldterm_trim(tp);
2608 tp->t_rocount = 0;
2609 if (tp->t_state & TS_MEUC)
2610 tp->t_eucp = tp->t_eucp_mp->b_rptr;
2612 tp->t_state &= ~(TS_QUOT|TS_ERASE|TS_SLNCH);
2622 ldterm_reprint(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2627 if (tp->t_modes.c_cc[VREPRINT] != (unsigned char) 0)
2628 (void) ldterm_echo(tp->t_modes.c_cc[VREPRINT], q, ebsize, tp);
2629 ldterm_outchar('\n', q, ebsize, tp);
2631 bp = tp->t_message;
2635 (void) ldterm_echo(*readp++, q, ebsize, tp);
2638 tp->t_state &= ~TS_ERASE;
2639 tp->t_rocount = tp->t_msglen; /* we reechoed the entire line */
2640 tp->t_rocol = 0;
2650 ldtermstd_state_t *tp)
2659 if (tp->t_modes.c_lflag & (ECHO|ECHONL|IEXTEN)) {
2684 if ((tp->t_modes.c_lflag & IEXTEN) &&
2685 !(tp->t_state & TS_SLNCH) &&
2687 c == tp->t_modes.c_cc[VLNEXT]) {
2688 if (tp->t_modes.c_lflag & ECHO)
2691 2, wrq, ebsize, tp);
2692 tp->t_state |= TS_SLNCH;
2701 tp->t_state &= ~TS_SLNCH;
2703 if (tp->t_modes.c_lflag & ECHO) {
2707 (void) ldterm_echo(c, wrq, ebsize, tp);
2708 } else if (tp->t_modes.c_lflag & ECHONL) {
2714 ldterm_outchar('\n', wrq, 1, tp);
2725 tp->t_state &= ~TS_SLNCH;
2748 tp->t_endmsg->b_cont = bpt;
2749 tp->t_endmsg = bpt;
2752 DEBUG5(("roomleft=%d, bytes_in_bp=%d, tp->t_rd_request=%d\n",
2753 roomleft, bytes_in_bp, tp->t_rd_request));
2761 if (tp->t_rd_request == 0)
2765 MIN(MIN(roomleft, bytes_in_bp), tp->t_rd_request);
2772 tp->t_msglen += bytes_to_move;
2782 tid = %d\n", V_MIN, V_TIME, tp->t_msglen, tp->t_vtid));
2803 if (tp->t_msglen)
2804 vmin_satisfied(q, tp, 1);
2814 if (tp->t_msglen >= (int)V_MIN)
2815 vmin_satisfied(q, tp, 1);
2824 if (tp->t_msglen >= (int)V_MIN)
2825 vmin_satisfied(q, tp, 1);
2834 vmin_satisfied(q, tp, 1);
2841 return (newmsg(tp));
2851 ldterm_echo(uchar_t c, queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
2855 if (!(tp->t_modes.c_lflag & ECHO))
2864 if ((tp->t_modes.c_lflag & ECHOCTL) &&
2865 (tp->t_modes.c_lflag & IEXTEN)) {
2867 ldterm_outchar('^', q, ebsize, tp);
2869 if (tp->t_modes.c_oflag & OLCUC)
2874 ldterm_outchar('^', q, ebsize, tp);
2878 ldterm_outchar(c, q, ebsize, tp);
2883 c == tp->t_modes.c_cc[VKILL]) {
2884 ldterm_outchar(c, q, ebsize, tp);
2895 ldterm_outchar(uchar_t c, queue_t *q, size_t bsize, ldtermstd_state_t *tp)
2903 if ((tp->t_modes.c_oflag & OPOST) ||
2904 ((tp->t_modes.c_lflag & XCASE) &&
2905 (tp->t_modes.c_lflag & ICANON))) {
2914 mp = ldterm_output_msg(q, mp, &tp->t_echomp, tp, bsize, 1);
2919 if ((curbp = tp->t_echomp) != NULL) {
2939 tp->t_echomp = curbp;
2951 ldtermstd_state_t *tp)
2954 ldterm_outchar(*cp++, q, bsize, tp);
2961 newmsg(ldtermstd_state_t *tp)
2968 if ((bp = tp->t_endmsg) == NULL) {
2974 tp->t_message = bp;
2975 tp->t_endmsg = bp;
2982 ldterm_msg_upstream(queue_t *q, ldtermstd_state_t *tp)
2987 bp = tp->t_message;
2990 putnext(q, tp->t_message);
2997 tp->t_message = NULL;
2998 tp->t_endmsg = NULL;
2999 tp->t_msglen = 0;
3000 tp->t_rocount = 0;
3001 tp->t_rd_request = 0;
3002 if (tp->t_state & TS_MEUC) {
3003 ASSERT(tp->t_eucp_mp);
3004 tp->t_eucp = tp->t_eucp_mp->b_rptr;
3020 ldtermstd_state_t *tp;
3022 tp = (ldtermstd_state_t *)q->q_ptr;
3026 tp->t_wbufcid = 0;
3041 ldtermstd_state_t *tp;
3044 tp = (ldtermstd_state_t *)q->q_ptr;
3058 if ((tp->t_state & TS_FLUSHWAIT) &&
3060 tp->t_state &= ~TS_FLUSHWAIT;
3072 if ((tp->t_state & TS_ISPTSTTY) &&
3087 if (tp->t_state & TS_MREAD)
3088 vmin_satisfied(RD(q), tp, 0);
3104 tp->t_rd_request = *(unsigned int *)mp->b_rptr;
3107 if (newmsg(tp) != NULL) {
3130 if (tp->t_state & TS_MREAD) {
3132 tp, 0);
3134 tp->t_state |= TS_MREAD;
3141 if (tp->t_msglen)
3143 tp, 1);
3155 if (tp->t_msglen >= (int)V_MIN)
3157 tp, 1);
3169 if (tp->t_msglen >= (int)V_MIN)
3171 tp, 1);
3172 else if (tp->t_msglen)
3180 vmin_satisfied(RD(q), tp, 1);
3295 ldtermstd_state_t *tp;
3299 tp = (ldtermstd_state_t *)q->q_ptr;
3311 if ((tp->t_modes.c_lflag & FLUSHO) &&
3312 (tp->t_modes.c_lflag & IEXTEN)) {
3316 tp->t_rocount = 0;
3321 if (((tp->t_modes.c_oflag & OPOST) ||
3322 ((tp->t_modes.c_lflag & XCASE) &&
3323 (tp->t_modes.c_lflag & ICANON))) &&
3324 (msgdsize(mp) || !(tp->t_state & TS_ISPTSTTY))) {
3329 tp, OBSIZE, 0);
3373 if (tp->t_wbufcid)
3374 qunbufcall(q, tp->t_wbufcid);
3375 tp->t_wbufcid = qbufcall(q, size, BPRI_MED, ldterm_wenable, q);
3387 ldtermstd_state_t *tp, size_t bsize, int echoing)
3450 if ((bytes_left < (int)tp->t_maxeuc)) {
3459 if ((tp->t_modes.c_lflag & XCASE) &&
3460 (tp->t_modes.c_lflag & ICANON)) {
3468 * tp->t_eucign will be 0 if and only
3473 if ((tp->t_state & TS_MEUC) &&
3474 tp->t_eucign == 0 && NOTASCII(c)) {
3475 tp->t_eucign =
3476 tp->t_csmethods.ldterm_memwidth(
3477 c, (void *)tp);
3478 tp->t_scratch_len = tp->t_eucign;
3480 if (tp->t_csdata.codeset_type !=
3482 tp->t_col +=
3483 tp->
3486 (void *)tp,
3487 tp->t_modes.c_lflag &
3497 if (tp->t_eucign == 0 && omaptab[c] != 0 &&
3500 tp->t_col++;
3514 tp->t_col--;
3525 if (!(tp->t_modes.c_oflag & OPOST)) {
3526 if (tp->t_eucign > 0) {
3527 --tp->t_eucign;
3529 tp->t_col++;
3541 if (tp->t_eucign == 0 &&
3542 (tp->t_modes.c_oflag & OLCUC) &&
3575 if (tp->t_state & TS_MEUC) {
3578 (tp->t_modes.c_oflag & OLCUC ?
3583 (tp->t_modes.c_oflag & OLCUC ?
3593 tp->t_col += bytes_moved;
3611 * 'tp->t_eucign' will be 0 iff the current 'c' is
3614 * We also add the display width to 'tp->t_col' if
3620 if ((tp->t_state & TS_MEUC) && tp->t_eucign == 0 &&
3622 tp->t_eucign = tp->t_csmethods.ldterm_memwidth(
3623 c, (void *)tp);
3624 tp->t_scratch_len = tp->t_eucign;
3626 if (tp->t_csdata.codeset_type !=
3628 tp->t_col +=
3629 tp->t_csmethods.ldterm_dispwidth(c,
3630 (void *)tp,
3631 tp->t_modes.c_lflag & ECHOCTL);
3665 if (c == '\r' && (tp->t_modes.c_oflag & OCRNL)) {
3671 if (tp->t_csdata.codeset_type == LDTERM_CS_TYPE_EUC) {
3680 if (tp->t_eucign == 0)
3690 if (c == '\n' && (tp->t_modes.c_oflag & ONLCR)) {
3691 if (!(tp->t_state & TS_TTCR)) {
3692 tp->t_state |= TS_TTCR;
3697 tp->t_state &= ~TS_TTCR;
3725 if (tp->t_state & TS_MEUC) {
3726 if (tp->t_eucign) {
3730 tp->t_scratch[tp->t_scratch_len
3731 - tp->t_eucign] = c;
3733 --tp->t_eucign;
3735 if (tp->t_csdata.codeset_type
3737 tp->t_eucign <= 0) {
3738 tp->t_col +=
3740 tp->t_scratch,
3741 tp->t_scratch_len);
3744 if (tp->t_modes.c_oflag & OLCUC)
3750 tp->t_col++;
3755 if (tp->t_modes.c_oflag & OLCUC)
3761 tp->t_col++;
3786 if (tp->t_col)
3787 tp->t_col--;
3788 if (tp->t_modes.c_oflag & BSDLY) {
3789 if (tp->t_modes.c_oflag & OFILL)
3797 if (tp->t_modes.c_oflag & ONLRET)
3799 if ((tp->t_modes.c_oflag & NLDLY) == NL1)
3814 if ((tp->t_modes.c_oflag & TABDLY) == XTABS) {
3818 tp->t_col++;
3819 if ((tp->t_col & 07) == 0)
3837 tp->t_col |= 07;
3838 tp->t_col++;
3839 if (tp->t_modes.c_oflag & OFILL) {
3840 if (tp->t_modes.c_oflag &
3844 switch (tp->t_modes.c_oflag &
3851 count = 1 + (tp->t_col |
3864 if ((tp->t_modes.c_oflag & VTDLY) &&
3865 !(tp->t_modes.c_oflag & OFILL))
3876 if (tp->t_col == 0 &&
3877 (tp->t_modes.c_oflag & ONOCR))
3881 switch (tp->t_modes.c_oflag & CRDLY) {
3884 if (tp->t_modes.c_oflag & OFILL)
3887 count = tp->t_col % 2;
3891 if (tp->t_modes.c_oflag & OFILL)
3898 if (tp->t_modes.c_oflag & OFILL)
3904 tp->t_col = 0;
3911 if (tp->t_modes.c_oflag & OFILL) {
3917 if (tp->t_modes.c_oflag & OFDEL)
3924 if ((tp->t_modes.c_lflag & FLUSHO) &&
3925 (tp->t_modes.c_lflag & IEXTEN)) {
3989 ldterm_flush_output(uchar_t c, queue_t *q, ldtermstd_state_t *tp)
3992 if (tp->t_modes.c_lflag & FLUSHO)
3993 tp->t_modes.c_lflag &= ~FLUSHO;
3998 if ((tp->t_echomp = allocb(EBSIZE, BPRI_HI)) != NULL) {
3999 (void) ldterm_echo(c, q, 1, tp);
4000 if (tp->t_msglen != 0)
4001 ldterm_reprint(q, EBSIZE, tp);
4002 if (tp->t_echomp != NULL) {
4003 putnext(q, tp->t_echomp);
4004 tp->t_echomp = NULL;
4007 tp->t_modes.c_lflag |= FLUSHO;
4018 ldtermstd_state_t *tp = (ldtermstd_state_t *)q->q_ptr;
4025 if ((!(tp->t_modes.c_lflag & NOFLSH)) || (c == '\0')) {
4027 if (tp->t_state & TS_TTSTOP) {
4038 if (tp->t_state & (TS_TBLOCK|TS_IFBLOCK)) {
4040 tp->t_state &= ~(TS_TBLOCK|TS_IFBLOCK);
4056 tp->t_state |= TS_FLUSHWAIT;
4058 if (tp->t_state & TS_TTSTOP) {
4060 tp->t_state &= ~(TS_TTSTOP|TS_OFBLOCK);
4065 tp->t_state &= ~TS_QUOT;
4070 if ((tp->t_echomp = allocb(4, BPRI_HI)) != NULL) {
4071 (void) ldterm_echo(c, WR(q), 4, tp);
4072 putnext(WR(q), tp->t_echomp);
4073 tp->t_echomp = NULL;
4087 ldtermstd_state_t *tp;
4098 tp = (ldtermstd_state_t *)q->q_ptr;
4121 oldmodes = tp->t_amodes;
4122 tp->t_amodes = *cb;
4123 if ((tp->t_amodes.c_lflag & PENDIN) &&
4124 (tp->t_modes.c_lflag & IEXTEN)) {
4130 if (tp->t_message != NULL) {
4131 tp->t_state |= TS_RESCAN;
4134 tp->t_amodes.c_lflag &= ~PENDIN;
4136 bcopy(tp->t_amodes.c_cc, tp->t_modes.c_cc, NCCS);
4142 tp->t_modes.c_cflag = tp->t_amodes.c_cflag;
4144 ldterm_adjust_modes(tp);
4145 if (chgstropts(&oldmodes, tp, RD(q)) == (-1)) {
4178 oldmodes = tp->t_amodes;
4179 tp->t_amodes.c_iflag =
4180 (tp->t_amodes.c_iflag & 0xffff0000 | cb->c_iflag);
4181 tp->t_amodes.c_oflag =
4182 (tp->t_amodes.c_oflag & 0xffff0000 | cb->c_oflag);
4183 tp->t_amodes.c_cflag =
4184 (tp->t_amodes.c_cflag & 0xffff0000 | cb->c_cflag);
4185 tp->t_amodes.c_lflag =
4186 (tp->t_amodes.c_lflag & 0xffff0000 | cb->c_lflag);
4188 bcopy(cb->c_cc, tp->t_modes.c_cc, NCC);
4190 bcopy(cb->c_cc, tp->t_amodes.c_cc, NCC);
4194 tp->t_modes.c_cflag = tp->t_amodes.c_cflag;
4196 ldterm_adjust_modes(tp);
4197 if (chgstropts(&oldmodes, tp, RD(q)) == (-1)) {
4231 tp->t_state |= TS_FLUSHWAIT;
4238 tp->t_state |= TS_FLUSHWAIT;
4258 if (!(tp->t_state & TS_TTSTOP)) {
4260 tp->t_state |= (TS_TTSTOP|TS_OFBLOCK);
4265 if (tp->t_state & TS_TTSTOP) {
4267 tp->t_state &= ~(TS_TTSTOP|TS_OFBLOCK);
4273 tp->t_state |= (TS_TBLOCK|TS_IFBLOCK);
4278 tp->t_state &= ~(TS_TBLOCK|TS_IFBLOCK);
4352 * Otherwise, save the information in tp,
4356 cp_eucwioc(euciocp, &tp->eucwioc, EUCIN);
4357 tp->eucwioc.eucw[0] = tp->eucwioc.scrw[0] = 1;
4367 tp->t_maxeuc = 0; /* reset to say we're NOT */
4369 tp->t_state &= ~TS_MEUC;
4379 if (tp->eucwioc.eucw[i] > tp->t_maxeuc)
4380 tp->t_maxeuc = tp->eucwioc.eucw[i];
4381 if (tp->eucwioc.scrw[i] > 1)
4382 tp->t_state |= TS_MEUC;
4384 if ((tp->t_maxeuc > 1) || (tp->t_state & TS_MEUC)) {
4385 if (!tp->t_eucp_mp) {
4386 if (!(tp->t_eucp_mp = allocb(CANBSIZ,
4388 tp->t_maxeuc = 1;
4389 tp->t_state &= ~TS_MEUC;
4407 if (tp->t_msglen) {
4408 tp->t_eucp =
4409 tp->t_eucp_mp->b_rptr;
4410 for (i = tp->t_msglen; i; i--)
4411 *tp->t_eucp++ = 1;
4413 tp->t_eucp =
4414 tp->t_eucp_mp->b_rptr;
4418 tp->t_state |= TS_MEUC;
4420 } else if (tp->t_eucp_mp) {
4421 freemsg(tp->t_eucp_mp);
4422 tp->t_eucp_mp = NULL;
4423 tp->t_eucp = NULL;
4432 bzero(&tp->t_csdata.eucpc_data,
4435 tp->t_csdata.eucpc_data[0].byte_length =
4436 tp->eucwioc.eucw[1];
4437 tp->t_csdata.eucpc_data[0].screen_width =
4438 tp->eucwioc.scrw[1];
4439 tp->t_csdata.eucpc_data[1].byte_length =
4440 tp->eucwioc.eucw[2];
4441 tp->t_csdata.eucpc_data[1].screen_width =
4442 tp->eucwioc.scrw[2];
4443 tp->t_csdata.eucpc_data[2].byte_length =
4444 tp->eucwioc.eucw[3];
4445 tp->t_csdata.eucpc_data[2].screen_width =
4446 tp->eucwioc.scrw[3];
4447 tp->t_csdata.version = LDTERM_DATA_VERSION;
4448 tp->t_csdata.codeset_type = LDTERM_CS_TYPE_EUC;
4454 tp->t_csdata.csinfo_num =
4456 if (tp->t_csdata.locale_name != (char *)NULL) {
4457 kmem_free(tp->t_csdata.locale_name,
4458 strlen(tp->t_csdata.locale_name) + 1);
4459 tp->t_csdata.locale_name = (char *)NULL;
4461 tp->t_csmethods = cs_methods[LDTERM_CS_TYPE_EUC];
4509 cp_eucwioc(&tp->eucwioc, euciocp, EUCOUT);
4611 tp->t_maxeuc = maxbytelen;
4612 tp->t_state &= ~TS_MEUC;
4614 if (!tp->t_eucp_mp) {
4615 if (!(tp->t_eucp_mp = allocb(CANBSIZ,
4630 if (tp->t_msglen) {
4631 tp->t_eucp = tp->t_eucp_mp->b_rptr;
4632 for (i = tp->t_msglen; i; i--)
4633 *tp->t_eucp++ = 1;
4635 tp->t_eucp = tp->t_eucp_mp->b_rptr;
4643 tp->t_state |= TS_MEUC;
4645 tp->t_csdata.version = csdp->version;
4646 tp->t_csdata.codeset_type = csdp->codeset_type;
4647 tp->t_csdata.csinfo_num = csdp->csinfo_num;
4648 bcopy(csdp->eucpc_data, tp->t_csdata.eucpc_data,
4651 tp->t_csmethods = cs_methods[csdp->codeset_type];
4654 tp->eucwioc.eucw[0] = 1;
4655 tp->eucwioc.scrw[0] = 1;
4657 tp->eucwioc.eucw[1] =
4659 tp->eucwioc.scrw[1] =
4662 tp->eucwioc.eucw[2] =
4664 tp->eucwioc.scrw[2] =
4667 tp->eucwioc.eucw[3] =
4669 tp->eucwioc.scrw[3] =
4675 * make use of the cleared tp->eucwioc when
4678 bzero(&tp->eucwioc, EUCSIZE);
4688 if (tp->t_eucp_mp) {
4689 freemsg(tp->t_eucp_mp);
4690 tp->t_eucp_mp = NULL;
4691 tp->t_eucp = NULL;
4694 bzero(&tp->eucwioc, EUCSIZE);
4695 tp->eucwioc.eucw[0] = 1;
4696 tp->eucwioc.scrw[0] = 1;
4697 if (tp->t_csdata.locale_name != (char *)NULL) {
4698 kmem_free(tp->t_csdata.locale_name,
4699 strlen(tp->t_csdata.locale_name) + 1);
4701 tp->t_csdata = default_cs_data;
4702 tp->t_csmethods = cs_methods[LDTERM_CS_TYPE_EUC];
4706 if (tp->t_csdata.locale_name != (char *)NULL) {
4707 kmem_free(tp->t_csdata.locale_name,
4708 strlen(tp->t_csdata.locale_name) + 1);
4711 tp->t_csdata.locale_name = (char *)kmem_alloc(
4713 (void) strcpy(tp->t_csdata.locale_name,
4716 tp->t_csdata.locale_name = (char *)NULL;
4735 csdp->version = tp->t_csdata.version;
4736 csdp->codeset_type = tp->t_csdata.codeset_type;
4737 csdp->csinfo_num = tp->t_csdata.csinfo_num;
4738 csdp->pad = tp->t_csdata.pad;
4739 if (tp->t_csdata.locale_name) {
4741 tp->t_csdata.locale_name);
4745 bcopy(tp->t_csdata.eucpc_data, csdp->eucpc_data,
4765 tp->t_state |= TS_ISPTSTTY;
4780 chgstropts(struct termios *oldmodep, ldtermstd_state_t *tp, queue_t *q)
4786 if ((oldmodep->c_lflag ^ tp->t_modes.c_lflag) & ICANON) {
4794 if (tp->t_modes.c_lflag & ICANON) {
4807 vmin_satisfied(q, tp, 0);
4814 if ((oldmodep->c_lflag ^ tp->t_modes.c_lflag) & TOSTOP) {
4818 if (tp->t_modes.c_lflag & TOSTOP)
4846 ldtermstd_state_t *tp;
4850 tp = (ldtermstd_state_t *)q->q_ptr;
4869 *cb = tp->t_amodes;
4885 cb->c_iflag = tp->t_amodes.c_iflag; /* all except the */
4886 cb->c_oflag = tp->t_amodes.c_oflag; /* cb->c_cflag */
4887 cb->c_lflag = tp->t_amodes.c_lflag;
4890 cb->c_cflag = tp->t_amodes.c_cflag;
4893 bcopy(tp->t_amodes.c_cc, cb->c_cc, NCC);
4907 vmin_satisfied(queue_t *q, ldtermstd_state_t *tp, int sendup)
4910 if (tp->t_vtid != 0) {
4911 DEBUG4(("vmin_satisfied: cancelled timer id %d\n", tp->t_vtid));
4912 (void) quntimeout(q, tp->t_vtid);
4913 tp->t_vtid = 0;
4916 if (tp->t_msglen == 0 && V_MIN) {
4922 (tp->t_msglen >= LDCHUNK)) {
4923 ldterm_msg_upstream(q, tp);
4931 tp->t_state &= ~TS_MREAD;
4937 ldtermstd_state_t *tp;
4939 tp = (ldtermstd_state_t *)q->q_ptr;
4944 if (tp->t_state & TS_CLOSE)
4948 * tp->t_vtid should NOT be set here unless VMIN > 0 and
4951 if (tp->t_vtid) {
4955 tp->t_vtid));
4959 tp->t_vtid));
4961 (void) quntimeout(q, tp->t_vtid);
4962 tp->t_vtid = 0;
4964 tp->t_vtid = qtimeout(q, vmin_timed_out, q,
4966 DEBUG4(("vmin_settimer: timer started, tid = %d\n", tp->t_vtid));
4977 ldtermstd_state_t *tp;
4979 tp = (ldtermstd_state_t *)q->q_ptr;
4981 DEBUG4(("vmin_timed_out: tid = %d\n", tp->t_vtid));
4983 tp->t_vtid = 0;
4984 vmin_satisfied(q, tp, 1);
4996 * will have the following fields set in tp structure -->
4997 * tp->t_modes: modes the line discipline will process tp->t_amodes:
5002 ldterm_adjust_modes(ldtermstd_state_t *tp)
5005 DEBUG6(("original iflag = %o\n", tp->t_modes.c_iflag));
5006 tp->t_modes.c_iflag = tp->t_amodes.c_iflag & ~(tp->t_dmodes.c_iflag);
5007 tp->t_modes.c_oflag = tp->t_amodes.c_oflag & ~(tp->t_dmodes.c_oflag);
5008 tp->t_modes.c_lflag = tp->t_amodes.c_lflag & ~(tp->t_dmodes.c_lflag);
5009 DEBUG6(("driver iflag = %o\n", tp->t_dmodes.c_iflag));
5010 DEBUG6(("apparent iflag = %o\n", tp->t_amodes.c_iflag));
5011 DEBUG6(("effective iflag = %o\n", tp->t_modes.c_iflag));
5030 ldterm_csi_erase(queue_t *q, size_t ebsize, ldtermstd_state_t *tp)
5039 if (tp->t_eucleft) {
5042 ldterm_eucwarn(tp);
5045 bottom = tp->t_eucp_mp->b_rptr;
5046 p = tp->t_eucp - 1; /* previous byte */
5075 if ((c = ldterm_unget(tp)) != (-1)) {
5076 ldterm_trim(tp);
5082 if (tp->t_csdata.codeset_type == LDTERM_CS_TYPE_UTF8) {
5089 ldterm_rubout(' ', q, ebsize, tp);
5094 tp->t_eucp = p;
5107 ldterm_eucwarn(ldtermstd_state_t *tp)
5109 ++tp->t_eucwarn;
5111 if ((tp->t_eucwarn > EUC_WARNCNT) && !(tp->t_state & TS_WARNED)) {
5114 (void *)tp);
5117 tp->t_state |= TS_WARNED;
5201 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5222 return (tp->eucwioc.scrw[2]);
5224 return (tp->eucwioc.scrw[3]);
5226 return (tp->eucwioc.scrw[1]);
5243 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5249 return (tp->eucwioc.eucw[2]);
5251 return (tp->eucwioc.eucw[3]);
5253 return (tp->eucwioc.eucw[1]);
5262 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5283 for (i = 0; i < tp->t_csdata.csinfo_num; i++) {
5284 if (c >= tp->t_csdata.eucpc_data[i].msb_start &&
5285 c <= tp->t_csdata.eucpc_data[i].msb_end)
5286 return (tp->t_csdata.eucpc_data[i].screen_width);
5300 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5303 for (i = 0; i < tp->t_csdata.csinfo_num; i++) {
5304 if (c >= tp->t_csdata.eucpc_data[i].msb_start &&
5305 c <= tp->t_csdata.eucpc_data[i].msb_end)
5306 return (tp->t_csdata.eucpc_data[i].byte_length);
5322 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5343 if (tp->t_csdata.codeset_type != LDTERM_CS_TYPE_UTF8)
5365 ldtermstd_state_t *tp = (ldtermstd_state_t *)p;
5372 if (tp->t_csdata.codeset_type != LDTERM_CS_TYPE_UTF8)