1 /* $Id: vttest.h,v 1.103 2018/07/25 14:02:16 tom Exp $ */
2 
3 #ifndef VTTEST_H
4 #define VTTEST_H 1
5 
6 #define VERSION "1.7b 1985-04-19"
7 #include <patchlev.h>
8 
9 /* Choose one of these */
10 
11 #ifdef HAVE_CONFIG_H
12 #include <config.h>
13 #define UNIX
14 #else
15 
16 /* Assume ANSI and (minimal) Posix */
17 #define HAVE_STDLIB_H 1
18 #define HAVE_STRING_H 1
19 #define RETSIGTYPE void
20 
21 #endif
22 
23 #ifndef GCC_UNUSED
24 #define GCC_UNUSED  /* ARGSUSED */
25 #endif
26 
27 #define SIG_ARGS int sig
28 
29 #include <stdio.h>
30 #include <stdarg.h>
31 
32 #ifdef HAVE_STDLIB_H
33 #include <stdlib.h>
34 #endif
35 
36 #ifdef HAVE_UNISTD_H
37 #include <unistd.h>
38 #endif
39 
40 #ifdef HAVE_STRING_H
41 #include <string.h>
42 #endif
43 
44 #include <ctype.h>
45 
46 #if defined(HAVE_TERMIOS_H) && defined(HAVE_TCGETATTR)
47 #  define USE_POSIX_TERMIOS 1
48 #elif defined(HAVE_TERMIO_H)
49 #  define USE_TERMIO 1
50 #elif defined(HAVE_SGTTY_H)
51 #  define USE_SGTTY 1
52 #  define USE_FIONREAD 1
53 #elif !defined(VMS)
54 #  error please fix me
55 #endif
56 
57 #ifndef USE_FIONREAD
58 #define USE_FIONREAD 0
59 #endif
60 
61 #ifndef USE_POSIX_TERMIOS
62 #define USE_POSIX_TERMIOS 0
63 #endif
64 
65 #ifndef USE_SGTTY
66 #define USE_SGTTY 0
67 #endif
68 
69 #ifndef USE_TERMIO
70 #define USE_TERMIO 0
71 #endif
72 
73 #include <signal.h>
74 #include <setjmp.h>
75 
76 #if USE_POSIX_TERMIOS
77 #  include <termios.h>
78 #  define TTY struct termios
79 #else
80 #  if USE_TERMIO
81 #    include <termio.h>
82 /*#    define TCSANOW TCSETA */
83 /*#    define TCSADRAIN TCSETAW */
84 /*#    define TCSAFLUSH TCSETAF */
85 #    define TTY struct termio
86 #    define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)
87 #    define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)
88 #    define VDISABLE (unsigned char)(-1)
89 #  else
90 #    if USE_SGTTY
91 #      include <sgtty.h>
92 #      define TTY struct sgttyb
93 #    endif
94 #  endif
95 #endif
96 
97 #ifdef HAVE_SYS_FILIO_H
98 #  include <sys/filio.h>        /* FIONREAD */
99 #endif
100 
101 #ifdef HAVE_FCNTL_H
102 #include <fcntl.h>
103 #endif
104 
105 #if !defined(sun) || !defined(NL0)
106 #  ifdef HAVE_IOCTL_H
107 #   include <ioctl.h>
108 #  else
109 #   ifdef HAVE_SYS_IOCTL_H
110 #    include <sys/ioctl.h>
111 #   endif
112 #  endif
113 #endif
114 
115 #include <errno.h>
116 
117 #define LOG_ENABLED ((log_fp != (FILE *) 0) && !log_disabled)
118 
119 #define CharOf(c) ((unsigned char)(c))
120 
121 extern FILE *log_fp;
122 extern int brkrd;
123 extern int do_colors;
124 extern int input_8bits;
125 extern int log_disabled;
126 extern int lrmm_flag;
127 extern int max_cols;
128 extern int max_lines;
129 extern int min_cols;
130 extern int origin_mode;
131 extern int output_8bits;
132 extern int reading;
133 extern int slow_motion;
134 extern int tty_speed;
135 extern int use_padding;
136 extern jmp_buf intrenv;
137 
138 #ifndef TRUE
139 #define TRUE (1)
140 #endif
141 
142 #ifndef FALSE
143 #define FALSE (0)
144 #endif
145 
146 #ifndef EXIT_SUCCESS
147 #define EXIT_SUCCESS 0
148 #endif
149 
150 #ifndef EXIT_FAILURE
151 #define EXIT_FAILURE 1
152 #endif
153 
154 #define SHOW_SUCCESS "ok"
155 #define SHOW_FAILURE "failed"
156 
157 #undef __
158 #define __(a,b) (void)(a && b)
159 
160 #define TABLESIZE(table) (int)(sizeof(table)/sizeof(table[0]))
161 
162 #define DEFAULT_SPEED 9600
163 #define TABWIDTH 8
164 
165 #define STR_ENABLE(flag)     ((flag) ? "Disable" : "Enable")
166 #define STR_ENABLED(flag)    ((flag) ? "enabled" : "disabled")
167 #define STR_START(flag)      ((flag) ? "Stop" : "Start")
168 
169 #if !defined(__GNUC__) && !defined(__attribute__)
170 #define __attribute__(p)  /* nothing */
171 #endif
172 
173 #ifndef GCC_PRINTFLIKE
174 #define GCC_PRINTFLIKE(fmt,var)   /* nothing */
175 #endif
176 
177 #ifndef GCC_UNUSED
178 #define GCC_UNUSED  /* nothing */
179 #endif
180 
181 /* my SunOS 4.1.x doesn't have prototyped headers */
182 #if defined(__GNUC__) && defined(sun) && !defined(__SVR4)
183 extern void perror(const char *s);
184 extern int _flsbuf(int c, FILE *s);
185 extern int fclose(FILE *s);
186 extern int fflush(FILE *s);
187 extern int fprintf(FILE *s, const char *fmt,...);
188 extern int fgetc(FILE *s);
189 extern int fputc(int c, FILE *s);
190 extern int fputs(char *p, FILE *s);
191 extern int ioctl(int fd, unsigned long mask, void *p);
192 extern int printf(const char *fmt,...);
193 extern int scanf(const char *fmt,...);
194 extern int sscanf(const char *src, const char *fmt,...);
195 extern long strtol(const char *src, char **dst, int base);
196 #endif
197 
198 #define MENU_DECL    const char *   the_title
199 #define MENU_ARGS    const char *   the_title GCC_UNUSED
200 #define PASS_ARGS /* const char * */the_title
201 
202 typedef struct {
203   const char *description;
204   int (*dispatch) (MENU_ARGS);
205 } MENU;
206 
207 typedef struct {
208   int cur_level;
209   int input_8bits;
210   int output_8bits;
211 } VTLEVEL;
212 
213 typedef struct {
214   int mode;
215   const char *name;
216   int level;
217 } RQM_DATA;
218 
219 #define MENU_NOHOLD 0
220 #define MENU_HOLD   1
221 #define MENU_MERGE  2
222 
223 #define TITLE_LINE  3
224 
225 #define WHITE_ON_BLUE   "0;37;44"
226 #define WHITE_ON_GREEN  "0;37;42"
227 #define YELLOW_ON_BLACK "0;33;40"
228 #define BLINK_REVERSE   "0;5;7"
229 
230 extern char origin_mode_mesg[80];
231 extern char lrmm_mesg[80];
232 extern char lr_marg_mesg[80];
233 extern char tb_marg_mesg[80];
234 extern char txt_override_color[80];
235 
236 extern RETSIGTYPE onbrk(SIG_ARGS);
237 extern RETSIGTYPE onterm(SIG_ARGS);
238 extern char *skip_csi(char *input);
239 extern char *skip_dcs(char *input);
240 extern char *skip_digits(char *src);
241 extern char *skip_prefix(const char *prefix, char *input);
242 extern char *skip_ss3(char *input);
243 extern char *skip_xdigits(char *src, int *value);
244 extern const char *parse_Sdesig(const char *source, int *offset);
245 extern const char *skip_csi_2(const char *input);
246 extern const char *skip_dcs_2(const char *input);
247 extern const char *skip_digits_2(const char *src);
248 extern const char *skip_prefix_2(const char *prefix, const char *input);
249 extern const char *skip_ss3_2(const char *input);
250 extern int any_DSR(MENU_ARGS, const char *text, void (*explain) (char *report));
251 extern int any_RQM(MENU_ARGS, RQM_DATA * table, int tablesize, int private);
252 extern int any_decrqpsr(MENU_ARGS, int Ps);
253 extern int any_decrqss(const char *msg, const char *func);
254 extern int any_decrqss2(const char *msg, const char *func, const char *expected);
255 extern int bug_a(MENU_ARGS);
256 extern int bug_b(MENU_ARGS);
257 extern int bug_c(MENU_ARGS);
258 extern int bug_d(MENU_ARGS);
259 extern int bug_e(MENU_ARGS);
260 extern int bug_f(MENU_ARGS);
261 extern int bug_l(MENU_ARGS);
262 extern int bug_s(MENU_ARGS);
263 extern int bug_w(MENU_ARGS);
264 extern int chrprint2(const char *s, int row, int col);
265 extern int conv_to_utf32(unsigned *target, const char *source, unsigned limit);
266 extern int conv_to_utf8(unsigned char *target, unsigned source, unsigned limit);
267 extern int get_bottom_margin(int n);
268 extern int get_left_margin(void);
269 extern int get_level(void);
270 extern int get_right_margin(void);
271 extern int get_top_margin(void);
272 extern int main(int argc, char *argv[]);
273 extern int menu(MENU *table);
274 extern int menu2(MENU *table, int tp);
275 extern int not_impl(MENU_ARGS);
276 extern int parse_decrqss(char *report, const char *func);
277 extern int print_chr(int c);
278 extern int print_str(const char *s);
279 extern int rpt_DECSTBM(MENU_ARGS);
280 extern int scan_any(char *str, int *pos, int toc);
281 extern int scanto(const char *str, int *pos, int toc);
282 extern int set_DECRPM(int level);
283 extern int set_level(int level);
284 extern int setup_terminal(MENU_ARGS);
285 extern int strip_suffix(char *src, const char *suffix);
286 extern int strip_terminator(char *src);
287 extern int terminal_id(void);
288 extern int title(int offset);
289 extern int toggle_DECOM(MENU_ARGS);
290 extern int toggle_LRMM(MENU_ARGS);
291 extern int toggle_SLRM(MENU_ARGS);
292 extern int toggle_STBM(MENU_ARGS);
293 extern int toggle_color_mode(MENU_ARGS);
294 extern int tst_CBT(MENU_ARGS);
295 extern int tst_CHA(MENU_ARGS);
296 extern int tst_CHT(MENU_ARGS);
297 extern int tst_CNL(MENU_ARGS);
298 extern int tst_CPL(MENU_ARGS);
299 extern int tst_DECRPM(MENU_ARGS);
300 extern int tst_DECSTR(MENU_ARGS);
301 extern int tst_DSR_cursor(MENU_ARGS);
302 extern int tst_DSR_keyboard(MENU_ARGS);
303 extern int tst_DSR_locator(MENU_ARGS);
304 extern int tst_DSR_printer(MENU_ARGS);
305 extern int tst_DSR_userkeys(MENU_ARGS);
306 extern int tst_HPA(MENU_ARGS);
307 extern int tst_HPR(MENU_ARGS);
308 extern int tst_SD(MENU_ARGS);
309 extern int tst_SRM(MENU_ARGS);
310 extern int tst_SU(MENU_ARGS);
311 extern int tst_VPA(MENU_ARGS);
312 extern int tst_VPR(MENU_ARGS);
313 extern int tst_bugs(MENU_ARGS);
314 extern int tst_characters(MENU_ARGS);
315 extern int tst_colors(MENU_ARGS);
316 extern int tst_doublesize(MENU_ARGS);
317 extern int tst_ecma48_curs(MENU_ARGS);
318 extern int tst_ecma48_misc(MENU_ARGS);
319 extern int tst_insdel(MENU_ARGS);
320 extern int tst_keyboard(MENU_ARGS);
321 extern int tst_keyboard_layout(char *scs_params);
322 extern int tst_mouse(MENU_ARGS);
323 extern int tst_movements(MENU_ARGS);
324 extern int tst_nonvt100(MENU_ARGS);
325 extern int tst_printing(MENU_ARGS);
326 extern int tst_reports(MENU_ARGS);
327 extern int tst_rst(MENU_ARGS);
328 extern int tst_screen(MENU_ARGS);
329 extern int tst_setup(MENU_ARGS);
330 extern int tst_softchars(MENU_ARGS);
331 extern int tst_statusline(MENU_ARGS);
332 extern int tst_tek4014(MENU_ARGS);
333 extern int tst_vt220(MENU_ARGS);
334 extern int tst_vt220_device_status(MENU_ARGS);
335 extern int tst_vt220_reports(MENU_ARGS);
336 extern int tst_vt220_screen(MENU_ARGS);
337 extern int tst_vt320(MENU_ARGS);
338 extern int tst_vt320_DECRQSS(MENU_ARGS);
339 extern int tst_vt320_cursor(MENU_ARGS);
340 extern int tst_vt320_device_status(MENU_ARGS);
341 extern int tst_vt320_report_presentation(MENU_ARGS);
342 extern int tst_vt320_reports(MENU_ARGS);
343 extern int tst_vt320_screen(MENU_ARGS);
344 extern int tst_vt420(MENU_ARGS);
345 extern int tst_vt420_DECRQSS(MENU_ARGS);
346 extern int tst_vt420_cursor(MENU_ARGS);
347 extern int tst_vt420_device_status(MENU_ARGS);
348 extern int tst_vt420_report_presentation(MENU_ARGS);
349 extern int tst_vt420_reports(MENU_ARGS);
350 extern int tst_vt52(MENU_ARGS);
351 extern int tst_vt520(MENU_ARGS);
352 extern int tst_vt520_reports(MENU_ARGS);
353 extern int tst_xterm(MENU_ARGS);
354 extern int vt_move(int row, int col);
355 extern void bye(void);
356 extern void default_level(void);
357 extern void do_scrolling(void);
358 extern void enable_logging(void);
359 extern void finish_vt420_cursor(MENU_ARGS);
360 extern void initterminal(int pn);
361 extern void menus_vt420_cursor(void);
362 extern void reset_level(void);
363 extern void restore_level(VTLEVEL *save);
364 extern void save_level(VTLEVEL *save);
365 extern void scs_graphics(void);
366 extern void scs_normal(void);
367 extern void set_colors(const char *value);
368 extern void setup_softchars(const char *filename);
369 extern void setup_vt420_cursor(MENU_ARGS);
370 extern void show_mousemodes(void);
371 extern void show_result(const char *fmt,...) GCC_PRINTFLIKE(1,2);
372 extern void slowly(void);
373 extern void test_with_margins(int enable);
374 extern void vt_clear(int code);
375 extern void vt_el(int code);
376 extern void vt_hilite(int flag);
377 
378 #endif /* VTTEST_H */
379