|
|
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[] = "@(#)ttinit.c 3.26 (Berkeley) 6/6/90"; ! 25: #endif /* not lint */ ! 26: ! 27: #include "ww.h" ! 28: #include "tt.h" ! 29: #ifdef POSIX_TTY ! 30: #include <sys/ioctl.h> ! 31: #endif ! 32: ! 33: int tt_h19(); ! 34: int tt_h29(); ! 35: int tt_f100(); ! 36: int tt_tvi925(); ! 37: int tt_wyse75(); ! 38: int tt_wyse60(); ! 39: int tt_zapple(); ! 40: int tt_zentec(); ! 41: int tt_generic(); ! 42: struct tt_tab tt_tab[] = { ! 43: { "h19", 3, tt_h19 }, ! 44: { "h29", 3, tt_h29 }, ! 45: { "f100", 4, tt_f100 }, ! 46: { "tvi925", 6, tt_tvi925 }, ! 47: { "wyse75", 6, tt_wyse75 }, ! 48: { "wyse60", 6, tt_wyse60 }, ! 49: { "w60", 3, tt_wyse60 }, ! 50: { "zapple", 6, tt_zapple }, ! 51: { "zentec", 6, tt_zentec }, ! 52: { "generic", 0, tt_generic }, ! 53: 0 ! 54: }; ! 55: ! 56: ttinit() ! 57: { ! 58: int i; ! 59: register struct tt_tab *tp; ! 60: register char *p, *q; ! 61: register char *t; ! 62: struct winsize winsize; ! 63: int ttflush(); ! 64: ! 65: tt_strp = tt_strings; ! 66: ! 67: /* ! 68: * Set output buffer size to about 1 second of output time. ! 69: */ ! 70: i = MIN(wwbaud/10, 512); ! 71: if ((tt_ob = malloc((unsigned) i)) == 0) { ! 72: wwerrno = WWE_NOMEM; ! 73: return -1; ! 74: } ! 75: tt_obp = tt_ob; ! 76: tt_obe = tt_ob + i; ! 77: ! 78: /* ! 79: * Use the standard name of the terminal (i.e. the second ! 80: * name in termcap). ! 81: */ ! 82: for (p = wwtermcap; *p && *p != '|' && *p != ':'; p++) ! 83: ; ! 84: if (*p == '|') ! 85: p++; ! 86: for (q = p; *q && *q != '|' && *q != ':'; q++) ! 87: ; ! 88: if (q != p && (t = malloc((unsigned) (q - p + 1))) != 0) { ! 89: wwterm = t; ! 90: while (p < q) ! 91: *t++ = *p++; ! 92: *t = 0; ! 93: } ! 94: for (tp = tt_tab; tp->tt_name != 0; tp++) ! 95: if (strncmp(tp->tt_name, wwterm, tp->tt_len) == 0) ! 96: break; ! 97: if (tp->tt_name == 0) { ! 98: wwerrno = WWE_BADTERM; ! 99: return -1; ! 100: } ! 101: if ((*tp->tt_func)() < 0) { ! 102: wwerrno = WWE_CANTDO; ! 103: return -1; ! 104: } ! 105: if (ioctl(0, TIOCGWINSZ, (char *)&winsize) >= 0) { ! 106: if (winsize.ws_row != 0) ! 107: tt.tt_nrow = winsize.ws_row; ! 108: if (winsize.ws_col != 0) ! 109: tt.tt_ncol = winsize.ws_col; ! 110: } ! 111: tt.tt_scroll_top = 0; ! 112: tt.tt_scroll_bot = tt.tt_nrow - 1; ! 113: tt.tt_flush = ttflush; ! 114: return 0; ! 115: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.