|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * This code is derived from software contributed to Berkeley by ! 6: * Edward Wang at The University of California, Berkeley. ! 7: * ! 8: * Redistribution and use in source and binary forms are permitted provided ! 9: * that: (1) source distributions retain this entire copyright notice and ! 10: * comment, and (2) distributions including binaries display the following ! 11: * acknowledgement: ``This product includes software developed by the ! 12: * University of California, Berkeley and its contributors'' in the ! 13: * documentation or other materials provided with the distribution and in ! 14: * all advertising materials mentioning features or use of this software. ! 15: * Neither the name of the University nor the names of its contributors may ! 16: * be used to endorse or promote products derived from this software without ! 17: * specific prior written permission. ! 18: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 19: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 20: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 21: */ ! 22: ! 23: #ifndef lint ! 24: static char sccsid[] = "@(#)tttermcap.c 3.12 (Berkeley) 6/6/90"; ! 25: #endif /* not lint */ ! 26: ! 27: #include "tt.h" ! 28: ! 29: char *tgetstr(); ! 30: char *tgoto(); ! 31: char *malloc(); ! 32: ! 33: tttputc(c) ! 34: { ! 35: ttputc(c); ! 36: } ! 37: ! 38: ttxputc(c) ! 39: { ! 40: *tt_strp++ = c; ! 41: } ! 42: ! 43: struct tt_str * ! 44: tttgetstr(str) ! 45: char *str; ! 46: { ! 47: register struct tt_str *s; ! 48: ! 49: if ((str = tgetstr(str, &tt_strp)) == 0) ! 50: return 0; ! 51: if ((s = (struct tt_str *) malloc(sizeof *s)) == 0) ! 52: return 0; ! 53: s->ts_str = str; ! 54: s->ts_n = tt_strp - s->ts_str - 1; ! 55: return s; ! 56: } ! 57: ! 58: struct tt_str * ! 59: ttxgetstr(str) ! 60: char *str; ! 61: { ! 62: register struct tt_str *s; ! 63: char buf[100]; ! 64: char *bufp = buf; ! 65: ! 66: if (tgetstr(str, &bufp) == 0) ! 67: return 0; ! 68: if ((s = (struct tt_str *) malloc(sizeof *s)) == 0) ! 69: return 0; ! 70: s->ts_str = tt_strp; ! 71: tputs(buf, 1, ttxputc); ! 72: s->ts_n = tt_strp - s->ts_str; ! 73: *tt_strp++ = 0; ! 74: return s; ! 75: } ! 76: ! 77: tttgoto(s, col, row) ! 78: struct tt_str *s; ! 79: { ! 80: register char *p = s->ts_str; ! 81: ! 82: ttputs(tgoto(p, col, row)); ! 83: for (p += s->ts_n; *--p == 0;) ! 84: ttputc(0); ! 85: } ! 86: ! 87: ttpgoto(s, col, row, n) ! 88: struct tt_str *s; ! 89: { ! 90: ! 91: tputs(tgoto(s->ts_str, col, row), n, tttputc); ! 92: } ! 93: ! 94: ttstrcmp(a, b) ! 95: register struct tt_str *a, *b; ! 96: { ! 97: int n, r; ! 98: ! 99: if (r = bcmp(a->ts_str, b->ts_str, ! 100: (n = a->ts_n - b->ts_n) < 0 ? a->ts_n : b->ts_n)) ! 101: return r; ! 102: return n; ! 103: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.