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: }
Defined functions
Defined variables
sccsid
defined in line
2;
never used