Annotation of 43BSDReno/contrib/isode-beta/compat/isoservent.c, revision 1.1

1.1     ! root        1: /* isoservent.c - look-up ISODE services */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/compat/RCS/isoservent.c,v 7.0 89/11/23 21:23:11 mrose Rel $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/compat/RCS/isoservent.c,v 7.0 89/11/23 21:23:11 mrose Rel $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       isoservent.c,v $
        !            12:  * Revision 7.0  89/11/23  21:23:11  mrose
        !            13:  * Release 6.0
        !            14:  * 
        !            15:  */
        !            16: 
        !            17: /*
        !            18:  *                               NOTICE
        !            19:  *
        !            20:  *    Acquisition, use, and distribution of this module and related
        !            21:  *    materials are subject to the restrictions of a license agreement.
        !            22:  *    Consult the Preface in the User's Manual for the full terms of
        !            23:  *    this agreement.
        !            24:  *
        !            25:  */
        !            26: 
        !            27: 
        !            28: /* LINTLIBRARY */
        !            29: 
        !            30: #include <ctype.h>
        !            31: #include <stdio.h>
        !            32: #include "general.h"
        !            33: #include "manifest.h"
        !            34: #include "isoservent.h"
        !            35: #include "tailor.h"
        !            36: 
        !            37: /*    DATA */
        !            38: 
        !            39: static char *isoservices = "isoservices";
        !            40: 
        !            41: static FILE *servf = NULL;
        !            42: static int  stayopen = 0;
        !            43: 
        !            44: static struct isoservent    iss;
        !            45: 
        !            46: /*  */
        !            47: 
        !            48: int    setisoservent (f)
        !            49: int    f;
        !            50: {
        !            51:     if (servf == NULL)
        !            52:        servf = fopen (isodefile (isoservices, 0), "r");
        !            53:     else
        !            54:        rewind (servf);
        !            55:     stayopen |= f;
        !            56: 
        !            57:     return (servf != NULL);
        !            58: }
        !            59: 
        !            60: 
        !            61: int    endisoservent () {
        !            62:     if (servf && !stayopen) {
        !            63:        (void) fclose (servf);
        !            64:        servf = NULL;
        !            65:     }
        !            66: 
        !            67:     return 1;
        !            68: }
        !            69: 
        !            70: /*  */
        !            71: 
        !            72: struct isoservent  *getisoservent () {
        !            73:     int            mask,
        !            74:            vecp;
        !            75:     register char  *cp;
        !            76:     register struct isoservent *is = &iss;
        !            77:     static char buffer[BUFSIZ + 1],
        !            78:                file[BUFSIZ];
        !            79:     static char *vec[NVEC + NSLACK + 1];
        !            80: 
        !            81:     if (servf == NULL
        !            82:            && (servf = fopen (isodefile (isoservices, 0), "r")) == NULL)
        !            83:        return NULL;
        !            84: 
        !            85:     bzero ((char *) is, sizeof *is);
        !            86: 
        !            87:     while (fgets (buffer, sizeof buffer, servf) != NULL) {
        !            88:        if (*buffer == '#')
        !            89:            continue;
        !            90:        if (cp = index (buffer, '\n'))
        !            91:            *cp = NULL;
        !            92:        if ((vecp = str2vecX (buffer, vec, 1 + 1, &mask, NULL)) < 3)
        !            93:            continue;
        !            94: 
        !            95:        if ((cp = index (vec[0], '/')) == NULL)
        !            96:            continue;
        !            97:        *cp++ = NULL;
        !            98: 
        !            99:        is -> is_provider = vec[0];
        !           100:        is -> is_entity = cp;
        !           101:        is -> is_selectlen = str2sel (vec[1], (mask & (1 << 1)) ? 1 : 0,
        !           102:                                is -> is_selector, ISSIZE);
        !           103: 
        !           104:        is -> is_vec = vec + 2;
        !           105:        is -> is_tail = vec + vecp;
        !           106: 
        !           107:        if (strcmp (cp = is -> is_vec[0], "tsapd-bootstrap"))
        !           108:            (void) strcpy (is -> is_vec[0] = file, isodefile (cp, 1));
        !           109: 
        !           110:        return is;
        !           111:     }
        !           112: 
        !           113:     return NULL;
        !           114: }
        !           115: 
        !           116: /*  */
        !           117: 
        !           118: #ifdef DEBUG
        !           119: _printsrv (is)
        !           120: register struct isoservent *is;
        !           121: {
        !           122:     register int    n = is -> is_tail - is -> is_vec - 1;
        !           123:     register char **ap = is -> is_vec;
        !           124: 
        !           125:     LLOG (addr_log, LLOG_DEBUG,
        !           126:          ("\tENT: \"%s\" PRV: \"%s\" SEL: %s",
        !           127:           is -> is_entity, is -> is_provider,
        !           128:           sel2str (is -> is_selector, is -> is_selectlen, 1)));
        !           129: 
        !           130:     for (; n >= 0; ap++, n--)
        !           131:        LLOG (addr_log, LLOG_DEBUG,
        !           132:              ("\t\t%d: \"%s\"\n", ap - is -> is_vec, *ap));
        !           133: }
        !           134: #endif

unix.superglobalmegacorp.com

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