Annotation of 43BSD/ucb/window/ttinit.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.