Annotation of 43BSDReno/contrib/isode-beta/acsap/isoalias.c, revision 1.1.1.1

1.1       root        1: /* isoalias.c - application entity info --  directory service utilities */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/acsap/RCS/isoalias.c,v 7.1 90/01/11 18:35:01 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/acsap/RCS/isoalias.c,v 7.1 90/01/11 18:35:01 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       isoalias.c,v $
                     12:  * Revision 7.1  90/01/11  18:35:01  mrose
                     13:  * real-sync
                     14:  * 
                     15:  * Revision 7.0  89/11/23  21:22:12  mrose
                     16:  * Release 6.0
                     17:  * 
                     18:  */
                     19: 
                     20: /*
                     21:  *                               NOTICE
                     22:  *
                     23:  *    Acquisition, use, and distribution of this module and related
                     24:  *    materials are subject to the restrictions of a license agreement.
                     25:  *    Consult the Preface in the User's Manual for the full terms of
                     26:  *    this agreement.
                     27:  *
                     28:  */
                     29: 
                     30: 
                     31: /* LINTLIBRARY */
                     32: 
                     33: #include <stdio.h>
                     34: #include "general.h"
                     35: #include "manifest.h"
                     36: #include "tailor.h"
                     37: 
                     38: /*    DATA */
                     39: 
                     40: static char *isoaliases = "isoaliases";
                     41: 
                     42: 
                     43: #define        PBUCKETS        128
                     44: #define        PHASH(nm) \
                     45:     (((nm)[1]) ? (((chrcnv[((nm)[0])] - chrcnv[((nm)[1])]) & 0x1f) \
                     46:                        + ((chrcnv[(nm)[2]]) & 0x5f)) \
                     47:               : (chrcnv[(nm)[0]]) & 0x7f)
                     48: 
                     49: struct pair {
                     50:     char   *p_name;
                     51:     char   *p_value;
                     52: 
                     53:     struct pair *p_chain;
                     54: };
                     55: 
                     56: static int inited = 0;
                     57: static struct pair *Pbuckets[PBUCKETS];
                     58: 
                     59: /*  */
                     60: 
                     61: char   *alias2name (name)
                     62: char   *name;
                     63: {
                     64:     register struct pair *p;
                     65: 
                     66:     if (!inited)
                     67:        read_aliases ();
                     68: 
                     69:     for (p = Pbuckets[PHASH (name)];
                     70:             p && lexequ (p -> p_name, name);
                     71:             p = p -> p_chain)
                     72:        continue;
                     73: 
                     74:     return (p ? p -> p_value : NULL);
                     75: }
                     76: 
                     77: /*  */
                     78: 
                     79: static int  read_aliases ()
                     80: {
                     81:     register char   *hp;
                     82:     char   buffer[BUFSIZ];
                     83: 
                     84:     if (inited)
                     85:        return;
                     86:     inited = 1;
                     87: 
                     88:     bzero ((char *) Pbuckets, sizeof Pbuckets);
                     89: 
                     90:     read_file (isodefile (isoaliases, 0));
                     91: 
                     92:     if ((hp = getenv ("HOME")) == NULL)
                     93:        hp = ".";
                     94:     (void) sprintf (buffer, "%s/.isode_aliases", hp);
                     95:     read_file (buffer);
                     96: }
                     97: 
                     98: /*  */
                     99: 
                    100: static int  read_file (file)
                    101: char   *file;
                    102: {
                    103:     register char *cp;
                    104:     char   buffer[BUFSIZ + 1],
                    105:          *vec[NVEC + NSLACK + 1];
                    106:     register FILE *fp;
                    107: 
                    108:     if ((fp = fopen (file, "r")) == NULL)
                    109:        return;
                    110: 
                    111:     while (fgets (buffer, sizeof buffer, fp)) {
                    112:        if (*buffer == '#')
                    113:            continue;
                    114:        if (cp = index (buffer, '\n'))
                    115:            *cp = NULL;
                    116:        if (str2vec (buffer, vec) < 2)
                    117:            continue;
                    118: 
                    119:        if (add_alias (vec[0], vec[1]) == NOTOK)
                    120:            break;
                    121:     }
                    122: 
                    123:     (void) fclose (fp);
                    124: }
                    125: 
                    126: /*  */
                    127: 
                    128: int    add_alias (name, value)
                    129: char   *name,
                    130:        *value;
                    131: {
                    132:     int            i;
                    133:     register struct pair *p;
                    134: 
                    135:     if (!inited)
                    136:        read_aliases ();
                    137: 
                    138:     if ((p = (struct pair *) calloc (1, sizeof *p)) == NULL) {
                    139:        SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
                    140:              ("calloc of alias structure failed"));
                    141:        return NOTOK;
                    142:     }
                    143: 
                    144:     if ((p -> p_name = malloc ((unsigned) (strlen (name) + 1))) == NULL
                    145:                || (p -> p_value = malloc ((unsigned) (strlen (value) + 1)))
                    146:            == NULL) {
                    147:        SLOG (addr_log, LLOG_EXCEPTIONS, NULLCP,
                    148:              ("malloc of alias structure failed"));
                    149:        if (p -> p_name)
                    150:            free (p -> p_name);
                    151:        free ((char *) p);
                    152:        return NOTOK;
                    153:     }
                    154:     (void) strcpy (p -> p_name, name);
                    155:     (void) strcpy (p -> p_value, value);
                    156: 
                    157:     p -> p_chain = Pbuckets[i = PHASH (p -> p_name)];
                    158:     Pbuckets[i] = p;
                    159: 
                    160:     return OK;
                    161: }

unix.superglobalmegacorp.com

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