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