Commit | Line | Data |
---|---|---|
b6c0a8f9 BJ |
1 | static char *sccsid = "@(#)tabs.c 4.1 (Berkeley) %G%"; |
2 | #include <stdio.h> | |
3 | #include <sgtty.h> | |
4 | ||
5 | #define SP ' ' | |
6 | #define TB '\t' | |
7 | #define NL '\n' | |
8 | ||
9 | # define ESC 033 | |
10 | # define RHM 060 | |
11 | # define SI 017 | |
12 | # define DEL 0177 | |
13 | # define SET '1' | |
14 | # define CLR '2' | |
15 | # define MGN '9' | |
16 | # define CR '\r' | |
17 | # define BS '\b' | |
18 | ||
19 | struct sysnod { | |
20 | char *sysnam; | |
21 | int sysval; | |
22 | }; | |
23 | ||
24 | #define DASI300 1 | |
25 | #define DASI300S 2 | |
26 | #define DASI450 3 | |
27 | #define TN300 4 | |
28 | #define TTY37 5 | |
29 | #define HP 6 | |
30 | struct sysnod tty[] = { | |
31 | {"dasi300", DASI300}, | |
32 | {"300", DASI300}, | |
33 | {"dasi300s", DASI300S}, | |
34 | {"300s", DASI300S}, | |
35 | {"dasi450", DASI450}, | |
36 | {"450", DASI450}, | |
37 | {"37", TTY37}, | |
38 | {"tty37", TTY37}, | |
39 | {"tn300", TN300}, | |
40 | {"terminet", TN300}, | |
41 | {"tn", TN300}, | |
42 | {"hp", HP}, | |
43 | {0, 0}, | |
44 | }; | |
45 | int margset = 1; | |
46 | ||
47 | syslook(w) | |
48 | char *w; | |
49 | { | |
50 | register struct sysnod *sp; | |
51 | ||
52 | for (sp = tty; sp->sysnam!=NULL; sp++) | |
53 | if (strcmp(sp->sysnam, w)==0) | |
54 | return(sp->sysval); | |
55 | return(0); | |
56 | } | |
57 | ||
58 | main(argc,argv) | |
59 | int argc; char **argv; | |
60 | { | |
61 | struct sgttyb tb; | |
62 | int type; | |
63 | char *getenv(); | |
64 | ||
65 | type=0; | |
66 | if (argc>=2 && strcmp(argv[1],"-n")==0) { | |
67 | margset--; argc--; argv++; | |
68 | } | |
69 | if (argc>=2) { | |
70 | type=syslook(argv[1]); | |
71 | } else { | |
72 | type=syslook(getenv("TERM")); | |
73 | } | |
74 | ||
75 | switch(type) { | |
76 | ||
77 | case DASI300: dasi300(); break; | |
78 | ||
79 | case DASI300S: dasi300(); break; | |
80 | ||
81 | case DASI450: dasi450(); break; | |
82 | ||
83 | case TN300: tn300(); break; | |
84 | ||
85 | case TTY37: tty37(); break; | |
86 | ||
87 | case HP: hp2645(); break; | |
88 | ||
89 | default: | |
90 | gtty (0, &tb); | |
91 | if ( (tb.sg_flags & (LCASE|CRMOD)) == CRMOD) { | |
92 | /* test for CR map on, upper case off, i.e. terminet but not 33 */ | |
93 | if ((tb.sg_ispeed) == B300) /* test for 300 baud */ | |
94 | misc(); | |
95 | } | |
96 | else if ((tb.sg_flags & (CRMOD|LCASE)) == 0 && (tb.sg_ispeed ) == B150) { | |
97 | /* apparent model 37 */ | |
98 | tty37(); | |
99 | } | |
100 | } | |
101 | } | |
102 | ||
103 | clear(n) | |
104 | { | |
105 | escape(CLR); | |
106 | delay(n); | |
107 | putchar(CR); nl(); | |
108 | } | |
109 | ||
110 | delay(n) | |
111 | { | |
112 | while (n--) putchar(DEL); | |
113 | } | |
114 | ||
115 | tabs(n) | |
116 | { | |
117 | int i,j; | |
118 | ||
119 | if(margset) n--; | |
120 | ||
121 | for( i=0; i<n; ++i ){ | |
122 | for( j=0; j<8; ++j ) { | |
123 | putchar(SP); | |
124 | } | |
125 | escape(SET); | |
126 | } | |
127 | } | |
128 | ||
129 | margin(n) | |
130 | { | |
131 | int i; | |
132 | ||
133 | if(margset) { | |
134 | for( i=0; i<n; ++i) putchar(SP); | |
135 | } | |
136 | } | |
137 | ||
138 | escape(c) | |
139 | { | |
140 | putchar(ESC); putchar(c); | |
141 | } | |
142 | ||
143 | bs(n) | |
144 | { | |
145 | while (n--) putchar(BS); | |
146 | } | |
147 | ||
148 | nl() | |
149 | { | |
150 | putchar(NL); | |
151 | } | |
152 | ||
153 | ||
154 | ||
155 | /* ======== terminal types ======== */ | |
156 | ||
157 | dasi450() | |
158 | { | |
159 | struct sgttyb t; | |
160 | gtty(0,&t); | |
161 | t.sg_flags &= ~ALLDELAY; | |
162 | stty(0,&t); | |
163 | clear(8); bs(16); margin(8); escape(MGN); nl(); tabs(16); | |
164 | escape(RHM); nl(); | |
165 | } | |
166 | ||
167 | tty37() | |
168 | { | |
169 | putchar(SI); clear(40); bs(8); tabs(9); nl(); | |
170 | } | |
171 | ||
172 | dasi300() | |
173 | { | |
174 | clear(8); tabs(15); nl(); | |
175 | } | |
176 | ||
177 | tn300() | |
178 | { | |
179 | struct sgttyb t; | |
180 | gtty(0,&t); | |
181 | t.sg_flags &= ~ALLDELAY; | |
182 | t.sg_flags |= CR1|BS1; | |
183 | stty(0,&t); | |
184 | clear(8); margin(8); escape(SET); tabs(14); nl(); | |
185 | } | |
186 | ||
187 | hp2645() | |
188 | { | |
189 | escape('3'); /*clr*/ | |
190 | putchar(CR); | |
191 | tabs(10); | |
192 | nl(); | |
193 | } | |
194 | ||
195 | misc() | |
196 | { | |
197 | tabs(14); nl(); | |
198 | } |