|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)ttinit.c 3.14 4/24/85"; ! 3: #endif ! 4: ! 5: /* ! 6: * Copyright (c) 1983 Regents of the University of California, ! 7: * All rights reserved. Redistribution permitted subject to ! 8: * the terms of the Berkeley Software License Agreement. ! 9: */ ! 10: ! 11: #include "ww.h" ! 12: #include "tt.h" ! 13: ! 14: int tt_h19(); ! 15: int tt_h29(); ! 16: int tt_f100(); ! 17: int tt_tvi925(); ! 18: int tt_generic(); ! 19: struct tt_tab tt_tab[] = { ! 20: { "h19", 3, tt_h19 }, ! 21: { "h29", 3, tt_h29 }, ! 22: { "f100", 4, tt_f100 }, ! 23: { "tvi925", 6, tt_tvi925 }, ! 24: { "generic", 0, tt_generic }, ! 25: 0 ! 26: }; ! 27: ! 28: ttinit() ! 29: { ! 30: register struct tt_tab *tp; ! 31: register char *p, *q; ! 32: register char *t; ! 33: struct winsize winsize; ! 34: ! 35: tt_strp = tt_strings; ! 36: ! 37: /* ! 38: * Set output buffer size to about 1 second of output time. ! 39: */ ! 40: tt_obp = tt_ob; ! 41: tt_obe = tt_ob + MIN(wwbaud/10, sizeof tt_ob); ! 42: ! 43: /* ! 44: * Use the standard name of the terminal (i.e. the second ! 45: * name in termcap). ! 46: */ ! 47: for (p = wwtermcap; *p && *p != '|' && *p != ':'; p++) ! 48: ; ! 49: if (*p == '|') ! 50: p++; ! 51: for (q = p; *q && *q != '|' && *q != ':'; q++) ! 52: ; ! 53: if (q != p && (t = malloc((unsigned) (q - p + 1))) != 0) { ! 54: wwterm = t; ! 55: while (p < q) ! 56: *t++ = *p++; ! 57: *t = 0; ! 58: } ! 59: for (tp = tt_tab; tp->tt_name != 0; tp++) ! 60: if (strncmp(tp->tt_name, wwterm, tp->tt_len) == 0) ! 61: break; ! 62: if (tp->tt_name == 0) { ! 63: wwerrno = WWE_BADTERM; ! 64: return -1; ! 65: } ! 66: if ((*tp->tt_func)() < 0) { ! 67: wwerrno = WWE_CANTDO; ! 68: return -1; ! 69: } ! 70: if (ioctl(0, (int)TIOCGWINSZ, (char *)&winsize) >= 0 && ! 71: winsize.ws_row != 0 && winsize.ws_col != 0) { ! 72: tt.tt_nrow = winsize.ws_row; ! 73: tt.tt_ncol = winsize.ws_col; ! 74: } ! 75: return 0; ! 76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.