|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)ttinit.c 3.20 (Berkeley) 6/29/88";
20: #endif /* not lint */
21:
22: #include "ww.h"
23: #include "tt.h"
24:
25: int tt_h19();
26: int tt_h29();
27: int tt_f100();
28: int tt_tvi925();
29: int tt_wyse75();
30: int tt_wyse60();
31: int tt_zentec();
32: int tt_generic();
33: struct tt_tab tt_tab[] = {
34: { "h19", 3, tt_h19 },
35: { "h29", 3, tt_h29 },
36: { "f100", 4, tt_f100 },
37: { "tvi925", 6, tt_tvi925 },
38: { "wyse75", 6, tt_wyse75 },
39: { "wyse60", 6, tt_wyse60 },
40: { "w60", 3, tt_wyse60 },
41: { "zentec", 6, tt_zentec },
42: { "generic", 0, tt_generic },
43: 0
44: };
45:
46: ttinit()
47: {
48: register struct tt_tab *tp;
49: register char *p, *q;
50: register char *t;
51: struct winsize winsize;
52:
53: tt_strp = tt_strings;
54:
55: /*
56: * Set output buffer size to about 1 second of output time.
57: */
58: tt_obp = tt_ob;
59: tt_obe = tt_ob + MIN(wwbaud/10, sizeof tt_ob);
60:
61: /*
62: * Use the standard name of the terminal (i.e. the second
63: * name in termcap).
64: */
65: for (p = wwtermcap; *p && *p != '|' && *p != ':'; p++)
66: ;
67: if (*p == '|')
68: p++;
69: for (q = p; *q && *q != '|' && *q != ':'; q++)
70: ;
71: if (q != p && (t = malloc((unsigned) (q - p + 1))) != 0) {
72: wwterm = t;
73: while (p < q)
74: *t++ = *p++;
75: *t = 0;
76: }
77: for (tp = tt_tab; tp->tt_name != 0; tp++)
78: if (strncmp(tp->tt_name, wwterm, tp->tt_len) == 0)
79: break;
80: if (tp->tt_name == 0) {
81: wwerrno = WWE_BADTERM;
82: return -1;
83: }
84: if ((*tp->tt_func)() < 0) {
85: wwerrno = WWE_CANTDO;
86: return -1;
87: }
88: tt.tt_scroll_top = 0;
89: tt.tt_scroll_bot = tt.tt_nrow - 1;
90: if (ioctl(0, TIOCGWINSZ, (char *)&winsize) >= 0 &&
91: winsize.ws_row != 0 && winsize.ws_col != 0) {
92: tt.tt_nrow = winsize.ws_row;
93: tt.tt_ncol = winsize.ws_col;
94: }
95: return 0;
96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.