head 1.2; access; symbols pkgsrc-2026Q1:1.2.0.192 pkgsrc-2026Q1-base:1.2 pkgsrc-2025Q4:1.2.0.190 pkgsrc-2025Q4-base:1.2 pkgsrc-2025Q3:1.2.0.188 pkgsrc-2025Q3-base:1.2 pkgsrc-2025Q2:1.2.0.186 pkgsrc-2025Q2-base:1.2 pkgsrc-2025Q1:1.2.0.184 pkgsrc-2025Q1-base:1.2 pkgsrc-2024Q4:1.2.0.182 pkgsrc-2024Q4-base:1.2 pkgsrc-2024Q3:1.2.0.180 pkgsrc-2024Q3-base:1.2 pkgsrc-2024Q2:1.2.0.178 pkgsrc-2024Q2-base:1.2 pkgsrc-2024Q1:1.2.0.176 pkgsrc-2024Q1-base:1.2 pkgsrc-2023Q4:1.2.0.174 pkgsrc-2023Q4-base:1.2 pkgsrc-2023Q3:1.2.0.172 pkgsrc-2023Q3-base:1.2 pkgsrc-2023Q2:1.2.0.170 pkgsrc-2023Q2-base:1.2 pkgsrc-2023Q1:1.2.0.168 pkgsrc-2023Q1-base:1.2 pkgsrc-2022Q4:1.2.0.166 pkgsrc-2022Q4-base:1.2 pkgsrc-2022Q3:1.2.0.164 pkgsrc-2022Q3-base:1.2 pkgsrc-2022Q2:1.2.0.162 pkgsrc-2022Q2-base:1.2 pkgsrc-2022Q1:1.2.0.160 pkgsrc-2022Q1-base:1.2 pkgsrc-2021Q4:1.2.0.158 pkgsrc-2021Q4-base:1.2 pkgsrc-2021Q3:1.2.0.156 pkgsrc-2021Q3-base:1.2 pkgsrc-2021Q2:1.2.0.154 pkgsrc-2021Q2-base:1.2 pkgsrc-2021Q1:1.2.0.152 pkgsrc-2021Q1-base:1.2 pkgsrc-2020Q4:1.2.0.150 pkgsrc-2020Q4-base:1.2 pkgsrc-2020Q3:1.2.0.148 pkgsrc-2020Q3-base:1.2 pkgsrc-2020Q2:1.2.0.144 pkgsrc-2020Q2-base:1.2 pkgsrc-2020Q1:1.2.0.124 pkgsrc-2020Q1-base:1.2 pkgsrc-2019Q4:1.2.0.146 pkgsrc-2019Q4-base:1.2 pkgsrc-2019Q3:1.2.0.142 pkgsrc-2019Q3-base:1.2 pkgsrc-2019Q2:1.2.0.140 pkgsrc-2019Q2-base:1.2 pkgsrc-2019Q1:1.2.0.138 pkgsrc-2019Q1-base:1.2 pkgsrc-2018Q4:1.2.0.136 pkgsrc-2018Q4-base:1.2 pkgsrc-2018Q3:1.2.0.134 pkgsrc-2018Q3-base:1.2 pkgsrc-2018Q2:1.2.0.132 pkgsrc-2018Q2-base:1.2 pkgsrc-2018Q1:1.2.0.130 pkgsrc-2018Q1-base:1.2 pkgsrc-2017Q4:1.2.0.128 pkgsrc-2017Q4-base:1.2 pkgsrc-2017Q3:1.2.0.126 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.122 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.120 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.2.0.118 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.116 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.114 pkgsrc-2016Q2-base:1.2 pkgsrc-2016Q1:1.2.0.112 pkgsrc-2016Q1-base:1.2 pkgsrc-2015Q4:1.2.0.110 pkgsrc-2015Q4-base:1.2 pkgsrc-2015Q3:1.2.0.108 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.106 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.104 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.102 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.100 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.98 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.96 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.94 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.92 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.90 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.88 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.2.0.86 pkgsrc-2012Q4-base:1.2 pkgsrc-2012Q3:1.2.0.84 pkgsrc-2012Q3-base:1.2 pkgsrc-2012Q2:1.2.0.82 pkgsrc-2012Q2-base:1.2 pkgsrc-2012Q1:1.2.0.80 pkgsrc-2012Q1-base:1.2 pkgsrc-2011Q4:1.2.0.78 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q3:1.2.0.76 pkgsrc-2011Q3-base:1.2 pkgsrc-2011Q2:1.2.0.74 pkgsrc-2011Q2-base:1.2 pkgsrc-2011Q1:1.2.0.72 pkgsrc-2011Q1-base:1.2 pkgsrc-2010Q4:1.2.0.70 pkgsrc-2010Q4-base:1.2 pkgsrc-2010Q3:1.2.0.68 pkgsrc-2010Q3-base:1.2 pkgsrc-2010Q2:1.2.0.66 pkgsrc-2010Q2-base:1.2 pkgsrc-2010Q1:1.2.0.64 pkgsrc-2010Q1-base:1.2 pkgsrc-2009Q4:1.2.0.62 pkgsrc-2009Q4-base:1.2 pkgsrc-2009Q3:1.2.0.60 pkgsrc-2009Q3-base:1.2 pkgsrc-2009Q2:1.2.0.58 pkgsrc-2009Q2-base:1.2 pkgsrc-2009Q1:1.2.0.56 pkgsrc-2009Q1-base:1.2 pkgsrc-2008Q4:1.2.0.54 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.52 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.50 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.48 pkgsrc-2008Q2-base:1.2 cwrapper:1.2.0.46 pkgsrc-2008Q1:1.2.0.44 pkgsrc-2008Q1-base:1.2 pkgsrc-2007Q4:1.2.0.42 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.40 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.38 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.36 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.34 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.32 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.30 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.28 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.26 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.24 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.22 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.20 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.18 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.16 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.14 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.2.0.12 pkgsrc-2004Q1-base:1.2 pkgsrc-2003Q4:1.2.0.10 pkgsrc-2003Q4-base:1.2 netbsd-1-6-1:1.2.0.6 netbsd-1-6-1-base:1.2 netbsd-1-6:1.2.0.8 netbsd-1-6-RELEASE-base:1.2 pkgviews:1.2.0.4 pkgviews-base:1.2 buildlink2:1.2.0.2 buildlink2-base:1.2 netbsd-1-5-PATCH003:1.2; locks; strict; comment @# @; 1.2 date 2002.02.11.18.30.23; author fredb; state Exp; branches; next 1.1; 1.1 date 2002.02.10.22.49.55; author fredb; state Exp; branches; next ; desc @@ 1.2 log @Programs that follow Digital's recommendations will follow ESC(0 -- to load the DEC Special Graphics (VT line draw) characters into graphics set GS0 -- with lock shift 0, aka LS0, aka SO, aka ^0 -- to then enable GS0. Since GS0 is the default, the full procedure is really only necessary when displaying line draw and alphanumeric characters on the same line. With the last patch to enable line draw characters, ESC(0 was always taken to mean ASCII SI (shift in), and ^0 was always taken to to mean SO (shift out), so for programs that did the right thing (e.g. "pstree"), "dt" was simply setting, then unsetting, the alternate character set attribute, causing the desired line draw characters never to be displayed. To deal with that, introduce a layer of abstraction, such that ESC(0 and friends now only set per-VT variables, rather than directly set the attribute. Initialize these variables so that SO and SI, taken alone, will do the expected thing, and extend the state machine so that a changed GS0 will become active at the next carriage return, or immediately if an LS0 was already seen on that line (all very much like a real VT). Bump version to dt-1.1.7nb2. @ text @$NetBSD$ --- vt.c.orig Fri May 24 10:13:52 1996 +++ vt.c @@@@ -748,6 +748,9 @@@@ register int line, i; if (v->state == ESnormal && ch >= ' ' && ch < 256) { + if ( (v->attr & T_LINEDRAW) && ch >= 'a' && ch <= 'z') + ch -= 95; + if (v->hanging_cursor) { v->x = 0; movecursordown(v); @@@@ -796,13 +799,38 @@@@ v->hanging_cursor = 0; /* XXX Is this right? */ return; case 13: + /* + * This is a hack! Do what I mean: after setting GS0, + * activate GS0 for next line, but don't just activate + * GS0 for every new line. + */ + if (v->gset0changed) { + if (v->gset0 == S_ASCII) + v->attr &= ~T_LINEDRAW; + else + v->attr |= T_LINEDRAW; + v->gset0changed = 0; + v->gset0mapped = 0; + } v->x = 0; /* Carriage return (^M) */ v->hanging_cursor = 0; return; case 14: - return; /* Alternate font (^N) */ + if (v->gset1 == S_ASCII) + v->attr &= ~T_LINEDRAW; + else + v->attr |= T_LINEDRAW; + return; /* Lock Shift 1 (^N) */ + v->gset0changed = 0; + v->gset0mapped = 0; case 15: - return; /* Normal font (^O) */ + if (v->gset0 == S_ASCII) + v->attr &= ~T_LINEDRAW; + else + v->attr |= T_LINEDRAW; + v->gset0changed = 1; /* to clear map bit at EOL */ + v->gset0mapped = 1; + return; /* Lock Shift 0 (^O) */ case 24: /* (^X) */ case 26: v->state = ESnormal; /* (^Z) */ @@@@ -1070,36 +1098,38 @@@@ break; case ESsetG0: if (ch == '0') { - /* Set graphics character set */ - } else - if (ch == 'B') { - /* Set normal character set */ - } else - if (ch == 'U') { - /* Set null character set */ - } else - if (ch == 'K') { - /* Set user-defined character - * set */ - } - /* If currently G0, then make active set */ + v->gset0 = S_LINEDRAW; + if (v->gset0mapped) + /* + * Activate immediately. We'll still mark it + * changed, so the mapped bit will get cleared + * for the next line. + */ + v->attr |= T_LINEDRAW; + v->gset0changed = 1; + } else if (ch == 'B') { + v->gset0 = S_ASCII; + if (v->gset0mapped) + /* + * Activate immediately. We'll still mark it + * changed, so the mapped bit will get cleared + * for the next line. + */ + v->attr &= ~T_LINEDRAW; + v->gset0changed = 1; + } v->state = ESnormal; break; + /* + * Not very useful. Typically, G1 would be changed to one + * of the other character sets, which we don't support. + */ case ESsetG1: if (ch == '0') { - /* Set graphics character set */ - } else - if (ch == 'B') { - /* Set normal character set */ - } else - if (ch == 'U') { - /* Set null character set */ - } else - if (ch == 'K') { - /* Set user-defined character - * set */ - } - /* If currently G1, then make active set */ + v->gset1 = S_LINEDRAW; + } else if (ch == 'B') { + v->gset1 = S_ASCII; + } v->state = ESnormal; break; default: @@@@ -1187,6 +1217,10 @@@@ v->tab_stop[3] = 0x01010101; v->tab_stop[4] = 0x01010101; v->copying = 0; + v->gset0 = S_ASCII; + v->gset0changed = 0; + v->gset0mapped = 0; + v->gset1 = S_LINEDRAW; } } @ 1.1 log @Boy, do I suck. Allen Briggs forwarded these patches from Steven Carlson , to do vt line draw characters, to me over *two* *years* ago! @ text @d4 1 a4 1 +++ vt.c Thu Feb 7 09:12:59 2002 d9 1 a9 1 + if ( (v->attr & T_G0) && ch >= 'a' && ch <= 'z') d15 18 a32 1 @@@@ -800,8 +803,10 @@@@ d36 8 a43 2 + v->attr |= T_G0; return; /* Alternate font (^N) */ d45 8 a52 2 + v->attr &= ~T_G0; return; /* Normal font (^O) */ d55 3 a57 1 @@@@ -1071,9 +1076,11 @@@@ d60 72 a131 9 /* Set graphics character set */ + v->attr |= T_G0; } else if (ch == 'B') { /* Set normal character set */ + v->attr &= ~T_G0; } else if (ch == 'U') { /* Set null character set */ @