xref: /csrg-svn/usr.bin/window/tttermcap.c (revision 29722)
114691Sedward #ifndef lint
2*29722Sedward static char sccsid[] = "@(#)tttermcap.c	3.7 08/05/86";
314691Sedward #endif
414691Sedward 
518740Sedward /*
618740Sedward  * Copyright (c) 1983 Regents of the University of California,
718740Sedward  * All rights reserved.  Redistribution permitted subject to
818740Sedward  * the terms of the Berkeley Software License Agreement.
918740Sedward  */
1018740Sedward 
1114691Sedward #include "tt.h"
1214691Sedward 
1314691Sedward char *tgetstr();
1424975Sedward char *tgoto();
1524975Sedward char *malloc();
1614691Sedward 
1716123Sedward tttputc(c)
1814691Sedward {
1916123Sedward 	ttputc(c);
2014691Sedward }
2114691Sedward 
2216123Sedward ttxputc(c)
2314691Sedward {
2414691Sedward 	*tt_strp++ = c;
2514691Sedward }
2614691Sedward 
2724975Sedward struct tt_str *
2824975Sedward tttgetstr(str)
2924975Sedward 	char *str;
3024975Sedward {
3124975Sedward 	register struct tt_str *s;
3224975Sedward 
3324975Sedward 	if ((str = tgetstr(str, &tt_strp)) == 0)
3424975Sedward 		return 0;
3524975Sedward 	if ((s = (struct tt_str *) malloc(sizeof *s)) == 0)
3624975Sedward 		return 0;
3724975Sedward 	s->ts_str = str;
3824975Sedward 	s->ts_n = tt_strp - s->ts_str - 1;
3924975Sedward 	return s;
4024975Sedward }
4124975Sedward 
4224975Sedward struct tt_str *
4316123Sedward ttxgetstr(str)
4424975Sedward 	char *str;
4514691Sedward {
4624975Sedward 	register struct tt_str *s;
4714691Sedward 	char buf[100];
4814691Sedward 	char *bufp = buf;
4914691Sedward 
5024975Sedward 	if (tgetstr(str, &bufp) == 0)
5114691Sedward 		return 0;
5224975Sedward 	if ((s = (struct tt_str *) malloc(sizeof *s)) == 0)
5324975Sedward 		return 0;
5424975Sedward 	s->ts_str = tt_strp;
5516123Sedward 	tputs(buf, 1, ttxputc);
5624975Sedward 	s->ts_n = tt_strp - s->ts_str;
5724975Sedward 	*tt_strp++ = 0;
5824975Sedward 	return s;
5914691Sedward }
6024975Sedward 
6124975Sedward tttgoto(s, col, row)
6224975Sedward 	struct tt_str *s;
6324975Sedward {
6424975Sedward 	register char *p = s->ts_str;
6524975Sedward 
6624975Sedward 	ttputs(tgoto(p, col, row));
6724975Sedward 	for (p += s->ts_n; *--p == 0;)
6824975Sedward 		ttputc(0);
6924975Sedward }
70*29722Sedward 
71*29722Sedward ttstrcmp(a, b)
72*29722Sedward 	register struct tt_str *a, *b;
73*29722Sedward {
74*29722Sedward 	int n, r;
75*29722Sedward 
76*29722Sedward 	if (r = bcmp(a->ts_str, b->ts_str,
77*29722Sedward 			(n = a->ts_n - b->ts_n) < 0 ? a->ts_n : b->ts_n))
78*29722Sedward 		return r;
79*29722Sedward 	return n;
80*29722Sedward }
81