118740Sedward /* 233514Sbostic * Copyright (c) 1983 Regents of the University of California. 333514Sbostic * All rights reserved. 433514Sbostic * 5*42954Sbostic * This code is derived from software contributed to Berkeley by 6*42954Sbostic * Edward Wang at The University of California, Berkeley. 7*42954Sbostic * 842835Sbostic * %sccs.include.redist.c% 918740Sedward */ 1018740Sedward 1133514Sbostic #ifndef lint 12*42954Sbostic static char sccsid[] = "@(#)tttermcap.c 3.12 (Berkeley) 06/06/90"; 1333514Sbostic #endif /* not lint */ 1433514Sbostic 1514691Sedward #include "tt.h" 1614691Sedward 1714691Sedward char *tgetstr(); 1824975Sedward char *tgoto(); 1924975Sedward char *malloc(); 2014691Sedward 2116123Sedward tttputc(c) 2214691Sedward { 2316123Sedward ttputc(c); 2414691Sedward } 2514691Sedward 2616123Sedward ttxputc(c) 2714691Sedward { 2814691Sedward *tt_strp++ = c; 2914691Sedward } 3014691Sedward 3124975Sedward struct tt_str * 3224975Sedward tttgetstr(str) 3324975Sedward char *str; 3424975Sedward { 3524975Sedward register struct tt_str *s; 3624975Sedward 3724975Sedward if ((str = tgetstr(str, &tt_strp)) == 0) 3824975Sedward return 0; 3924975Sedward if ((s = (struct tt_str *) malloc(sizeof *s)) == 0) 4024975Sedward return 0; 4124975Sedward s->ts_str = str; 4224975Sedward s->ts_n = tt_strp - s->ts_str - 1; 4324975Sedward return s; 4424975Sedward } 4524975Sedward 4624975Sedward struct tt_str * 4716123Sedward ttxgetstr(str) 4824975Sedward char *str; 4914691Sedward { 5024975Sedward register struct tt_str *s; 5114691Sedward char buf[100]; 5214691Sedward char *bufp = buf; 5314691Sedward 5424975Sedward if (tgetstr(str, &bufp) == 0) 5514691Sedward return 0; 5624975Sedward if ((s = (struct tt_str *) malloc(sizeof *s)) == 0) 5724975Sedward return 0; 5824975Sedward s->ts_str = tt_strp; 5916123Sedward tputs(buf, 1, ttxputc); 6024975Sedward s->ts_n = tt_strp - s->ts_str; 6124975Sedward *tt_strp++ = 0; 6224975Sedward return s; 6314691Sedward } 6424975Sedward 6524975Sedward tttgoto(s, col, row) 6624975Sedward struct tt_str *s; 6724975Sedward { 6824975Sedward register char *p = s->ts_str; 6924975Sedward 7024975Sedward ttputs(tgoto(p, col, row)); 7124975Sedward for (p += s->ts_n; *--p == 0;) 7224975Sedward ttputc(0); 7324975Sedward } 7429722Sedward 7537998Sedward ttpgoto(s, col, row, n) 7637998Sedward struct tt_str *s; 7737998Sedward { 7837998Sedward 7937998Sedward tputs(tgoto(s->ts_str, col, row), n, tttputc); 8037998Sedward } 8137998Sedward 8229722Sedward ttstrcmp(a, b) 8329722Sedward register struct tt_str *a, *b; 8429722Sedward { 8529722Sedward int n, r; 8629722Sedward 8729722Sedward if (r = bcmp(a->ts_str, b->ts_str, 8829722Sedward (n = a->ts_n - b->ts_n) < 0 ? a->ts_n : b->ts_n)) 8929722Sedward return r; 9029722Sedward return n; 9129722Sedward } 92