xref: /386bsd/usr/src/lib/libterm/test/tc3.c (revision a2142627)
1 /*-
2  * Copyright (c) 1983 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *	This product includes software developed by the University of
16  *	California, Berkeley and its contributors.
17  * 4. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  */
33 
34 #ifndef lint
35 char copyright[] =
36 "@(#) Copyright (c) 1983 The Regents of the University of California.\n\
37  All rights reserved.\n";
38 #endif /* not lint */
39 
40 #ifndef lint
41 static char sccsid[] = "@(#)tc3.c	5.4 (Berkeley) 4/12/91";
42 #endif /* not lint */
43 
44 /*
45  * tc3 [term]
46  * Dummy program to test out termlib.  Input two numbers (row and col)
47  * and it prints out the tgoto string generated.
48  */
49 #include <stdio.h>
50 char buf[1024];
51 char *getenv(), *tgetstr();
52 char *rdchar();
53 char *tgoto();
54 char *CM;
55 char cmbuff[30];
56 char *x;
57 char *UP;
58 char *tgout;
59 
main(argc,argv)60 main(argc, argv) char **argv; {
61 	char *p;
62 	int rc;
63 	int row, col;
64 
65 	if (argc < 2)
66 		p = getenv("TERM");
67 	else
68 		p = argv[1];
69 	rc = tgetent(buf,p);
70 	x = cmbuff;
71 	UP = tgetstr("up", &x);
72 	printf("UP = %x = ", UP); pr(UP); printf("\n");
73 	if (UP && *UP==0)
74 		UP = 0;
75 	CM = tgetstr("cm", &x);
76 	printf("CM = "); pr(CM); printf("\n");
77 	for (;;) {
78 		if (scanf("%d %d", &row, &col) < 2)
79 			exit(0);
80 		tgout = tgoto(CM, col, row);
81 		pr(tgout);
82 		printf("\n");
83 	}
84 }
85 
pr(p)86 pr(p)
87 register char *p;
88 {
89 	for (; *p; p++)
90 		printf("%s", rdchar(*p));
91 }
92 
93 /*
94  * rdchar() returns a readable representation of an ASCII character
95  * using ^ for control, ' for meta.
96  */
97 #include <ctype.h>
rdchar(c)98 char *rdchar(c)
99 char c;
100 {
101 	static char ret[4];
102 	register char *p = ret;
103 
104 	if ((c&0377) > 0177)
105 		*p++ = '\'';
106 	c &= 0177;
107 	if (!isprint(c))
108 		*p++ = '^';
109 	*p++ = (isprint(c) ?  c  : c^0100);
110 	*p = 0;
111 	return (ret);
112 }
113