Annotation of 42BSD/usr.bin/tip/remote.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)remote.c   4.7 (Berkeley) 6/25/83";
                      3: #endif
                      4: 
                      5: # include "tip.h"
                      6: 
                      7: /*
                      8:  * Attributes to be gleened from remote host description
                      9:  *   data base.
                     10:  */
                     11: static char **caps[] = {
                     12:        &AT, &DV, &CM, &CU, &EL, &IE, &OE, &PN, &PR, &DI,
                     13:        &ES, &EX, &FO, &RC, &RE, &PA
                     14: };
                     15: 
                     16: static char *capstrings[] = {
                     17:        "at", "dv", "cm", "cu", "el", "ie", "oe", "pn", "pr",
                     18:        "di", "es", "ex", "fo", "rc", "re", "pa", 0
                     19: };
                     20: 
                     21: char *rgetstr();
                     22: 
                     23: static
                     24: getremcap(host)
                     25:        register char *host;
                     26: {
                     27:        int stat;
                     28:        char tbuf[BUFSIZ];
                     29:        static char buf[BUFSIZ/2];
                     30:        char *bp = buf;
                     31:        register char **p, ***q;
                     32: 
                     33:        if ((stat = rgetent(tbuf, host)) <= 0) {
                     34:                fprintf(stderr, stat == 0 ?
                     35:                        "tip: unknown host %s\n" :
                     36:                        "tip: can't open host description file\n", host);
                     37:                exit(3);
                     38:        }
                     39: 
                     40:        for (p = capstrings, q = caps; *p != NULL; p++, q++)
                     41:                if (**q == NULL)
                     42:                        **q = rgetstr(*p, &bp);
                     43:        if (!BR && (BR = rgetnum("br")) < 0)
                     44:                BR = DEFBR;
                     45:        if ((FS = rgetnum("fs")) < 0)
                     46:                FS = DEFFS;
                     47:        if (DU < 0)
                     48:                DU = 0;
                     49:        else
                     50:                DU = rgetflag("du");
                     51:        if (DV == NOSTR) {
                     52:                fprintf(stderr, "%s: missing device spec\n", host);
                     53:                exit(3);
                     54:        }
                     55:        if (DU && CU == NOSTR)
                     56:                CU = DV;
                     57:        if (DU && PN == NOSTR) {
                     58:                fprintf(stderr, "%s: missing phone number\n", host);
                     59:                exit(3);
                     60:        }
                     61: 
                     62:        HD = rgetflag("hd");
                     63: 
                     64:        /*
                     65:         * This effectively eliminates the "hw" attribute
                     66:         *   from the description file
                     67:         */
                     68:        if (!HW)
                     69:                HW = (CU == NOSTR) || (DU && equal(DV, CU));
                     70:        HO = host;
                     71:        /*
                     72:         * see if uppercase mode should be turned on initially
                     73:         */
                     74:        if (rgetflag("ra"))
                     75:                boolean(value(RAISE)) = 1;
                     76:        if (rgetflag("ec"))
                     77:                boolean(value(ECHOCHECK)) = 1;
                     78:        if (rgetflag("be"))
                     79:                boolean(value(BEAUTIFY)) = 1;
                     80:        if (rgetflag("nb"))
                     81:                boolean(value(BEAUTIFY)) = 0;
                     82:        if (rgetflag("sc"))
                     83:                boolean(value(SCRIPT)) = 1;
                     84:        if (rgetflag("tb"))
                     85:                boolean(value(TABEXPAND)) = 1;
                     86:        if (rgetflag("vb"))
                     87:                boolean(value(VERBOSE)) = 1;
                     88:        if (rgetflag("nv"))
                     89:                boolean(value(VERBOSE)) = 0;
                     90:        if (rgetflag("ta"))
                     91:                boolean(value(TAND)) = 1;
                     92:        if (rgetflag("nt"))
                     93:                boolean(value(TAND)) = 0;
                     94:        if (rgetflag("rw"))
                     95:                boolean(value(RAWFTP)) = 1;
                     96:        if (rgetflag("hd"))
                     97:                boolean(value(HALFDUPLEX)) = 1;
                     98:        if (*RE == NULL)
                     99:                RE = (char *)"tip.record";
                    100:        if (*EX == NULL)
                    101:                EX = (char *)"\t\n\b\f";
                    102:        if (ES != NOSTR)
                    103:                vstring("es", ES);
                    104:        if (FO != NOSTR)
                    105:                vstring("fo", FO);
                    106:        if (PR != NOSTR)
                    107:                vstring("pr", PR);
                    108:        if (RC != NOSTR)
                    109:                vstring("rc", RC);
                    110:        if ((DL = rgetnum("dl")) < 0)
                    111:                DL = 0;
                    112:        if ((CL = rgetnum("cl")) < 0)
                    113:                CL = 0;
                    114:        if ((ET = rgetnum("et")) < 0)
                    115:                ET = 10;
                    116: }
                    117: 
                    118: char *
                    119: getremote(host)
                    120:        char *host;
                    121: {
                    122:        register char *cp;
                    123:        static char *next;
                    124:        static int lookedup = 0;
                    125: 
                    126:        if (!lookedup) {
                    127:                if (host == NOSTR && (host = getenv("HOST")) == NOSTR) {
                    128:                        fprintf(stderr, "tip: no host specified\n");
                    129:                        exit(3);
                    130:                }
                    131:                getremcap(host);
                    132:                next = DV;
                    133:                lookedup++;
                    134:        }
                    135:        /*
                    136:         * We return a new device each time we're called (to allow
                    137:         *   a rotary action to be simulated)
                    138:         */
                    139:        if (next == NOSTR)
                    140:                return (NOSTR);
                    141:        if ((cp = index(next, ',')) == NULL) {
                    142:                DV = next;
                    143:                next = NOSTR;
                    144:        } else {
                    145:                *cp++ = '\0';
                    146:                DV = next;
                    147:                next = cp;
                    148:        }
                    149:        return (DV);
                    150: }

unix.superglobalmegacorp.com

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