freebsd-dev/lib/libmytinfo/TESTS/ttest.c
1995-05-30 05:51:47 +00:00

298 lines
5.2 KiB
C

/*
* ttest.c
*
* By Ross Ridge
* Public Domain
* 92/02/01 07:30:47
*
*/
#define NOTLIB
#include "defs.h"
#include <term.h>
const char SCCSid[] = "@(#) mytinfo ttest.c 3.2 92/02/01 public domain, By Ross Ridge";
int
cup(x,y)
int x, y; {
if (columns < 2 || lines < 2)
return -1;
if (cursor_address != NULL)
putp(tparm(cursor_address, y, x));
else if (cursor_home != NULL && cursor_down != NULL
&& cursor_right != NULL) {
putp(cursor_home);
if (parm_down_cursor != NULL)
putp(tparm(parm_down_cursor, y));
else
for(; y > 0; y--)
putp(cursor_down);
if (parm_right_cursor != NULL)
putp(tparm(parm_right_cursor, y));
else
for(; y > 0; y--)
putp(cursor_right);
} else if (cursor_to_ll != NULL && cursor_up != NULL
&& cursor_right != NULL) {
putp(cursor_to_ll);
if (parm_up_cursor != NULL)
putp(tparm(parm_up_cursor, y));
else
for(y++; y < columns ; y++)
putp(cursor_up);
if (parm_right_cursor != NULL)
putp(tparm(parm_right_cursor, y));
else
for(; y > 0; y--)
putp(cursor_right);
} else
return 1;
return 0;
}
int
clear() {
int r;
if (clear_screen != NULL)
putp(clear_screen);
else if (clr_eos != NULL) {
r = cup(0,0);
if (r != 0)
return r;
putp(clr_eos);
} else
return -2;
return 0;
}
void
nl() {
if (newline != NULL)
putp(newline);
else if (carriage_return != NULL && cursor_down != NULL) {
putp(cursor_down);
putp(carriage_return);
} else
quit(-1, "can't do a newline");
return;
}
void
putln(s)
char *s; {
int i;
if (columns < 2 || auto_right_margin)
fputs(s, stdout);
else {
i = 0;
while(*s) {
putchar(*s);
s++;
if (++i == columns) {
nl();
i = 0;
}
}
}
nl();
}
void
anykey() {
fputs("-- press any key --", stdout);
fflush(stdout);
getchar();
nl();
}
void
do_cleanup(e)
int e; {
fflush(stdout);
fflush(stderr);
reset_shell_mode();
fprintf(stderr, "\n");
}
#ifdef USE_SGTTY
struct sgttyb new_tty;
#else
#ifdef USE_TERMIO
struct termio new_tty;
#else
struct termios new_tty;
#endif
#endif
int
main(argc, argv)
int argc;
char **argv; {
register int i;
prg_name = argv[0];
cleanup = do_cleanup;
if (argc == 1)
setupterm(NULL, 1, (int *) 0);
else if (argc == 2)
setupterm(argv[1], 1, (int *) 0);
else {
fprintf(stderr, "usage: %s [terminal]\n", argv[0]);
return 1;
}
fflush(stderr);
fflush(stdout);
#ifdef USE_SGTTY
ioctl(1, TIOCGETP, &new_tty);
new_tty.sg_flags &= ~(CRMOD | ECHO | XTABS);
#ifdef CBREAK
new_tty.sg_flags |= CBREAK;
#else
new_tty.sg_flags |= RAW;
#endif
ioctl(1, TIOCSETP, &new_tty);
#endif
#ifdef USE_TERMIO
ioctl(1, TCGETA, &new_tty);
#else
#ifdef USE_TERMIOS
tcgetattr(1, &new_tty);
#endif
#endif
#if defined(USE_TERMIO) || defined(USE_TERMIOS)
new_tty.c_lflag &= ~(ICANON | ECHO);
new_tty.c_oflag &= ~(OPOST);
new_tty.c_cc[VMIN] = 1;
new_tty.c_cc[VTIME] = 1;
#endif
#ifdef USE_TERMIO
ioctl(1, TCSETA, &new_tty);
#else
#ifdef USE_TERMIOS
tcsetattr(1, TCSADRAIN, &new_tty);
#endif
#endif
def_prog_mode();
clear();
printf("columns = %d", columns);
nl();
printf("lines = %d", lines);
if (columns < 2)
quit(-1, "columns must be > 1");
nl();
anykey();
nl();
if (auto_right_margin) {
putln("auto_right_margin = TRUE");
nl();
for(i = 0; i < columns; i++)
putchar('1');
for(i = 0; i < columns / 2; i++)
putchar('2');
nl();
} else {
putln("auto_right_margin = FALSE");
nl();
for(i = 0; i < columns + columns / 2; i++)
putchar('1');
nl();
for(i = 0; i < columns / 2; i++)
putchar('2');
nl();
}
nl();
putln("***a line of 1's followed by a line of 2's");
nl();
anykey();
nl();
if (over_strike) {
putln("over_strike = TRUE");
if (cursor_left != NULL) {
for(i = 0; i < columns / 4 + 1; i++) {
putchar('/');
putp(cursor_left);
putchar('\\');
}
} else if (carriage_return != NULL) {
for(i = 0; i < columns / 4 + 1; i++)
putchar('/');
putp(carriage_return);
for(i = 0; i < columns / 4 + 1; i++)
putchar('\\');
}
nl();
nl();
putln("*** X's made from \\'s overstriking /'s");
nl();
anykey();
nl();
}
if (cup(0,0) == 0) {
clear();
putln("cup test");
for(i = 1; i < columns; i++)
putp(tparm(cursor_address, 0, i));
for(i = 0; i < lines; i++)
putp(tparm(cursor_address, i, columns - 1));
for(i = columns; i--;)
putp(tparm(cursor_address, lines - 1, i));
for(i = lines; i--;)
putp(tparm(cursor_address, i, 0));
nl();
anykey();
}
clear();
putln("Attribute test");
nl();
if (enter_blink_mode != NULL) {
putp(enter_blink_mode);
printf("blink");
putp(exit_attribute_mode);
nl();
}
if (enter_bold_mode != NULL) {
putp(enter_bold_mode);
printf("bold");
putp(exit_attribute_mode);
nl();
}
if (enter_dim_mode != NULL) {
putp(enter_dim_mode);
printf("dim");
putp(exit_attribute_mode);
nl();
}
if (enter_reverse_mode != NULL) {
putp(enter_reverse_mode);
printf("reverse");
putp(exit_attribute_mode);
nl();
}
if (enter_standout_mode != NULL) {
putp(enter_standout_mode);
printf("standout");
putp(exit_standout_mode);
nl();
}
if (enter_underline_mode != NULL) {
putp(enter_underline_mode);
printf("underline");
putp(exit_underline_mode);
nl();
}
nl();
anykey();
clear();
reset_shell_mode();
return (0);
}