386BSD 0.1 development
[unix-history] / usr / src / lib / libterm / test / tc3.c
CommitLineData
511625a8
WJ
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
35char 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
41static 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>
50char buf[1024];
51char *getenv(), *tgetstr();
52char *rdchar();
53char *tgoto();
54char *CM;
55char cmbuff[30];
56char *x;
57char *UP;
58char *tgout;
59
60main(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
86pr(p)
87register 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>
98char *rdchar(c)
99char 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}