# 2.11BSD#431 - /usr/src/usr.sbin/sendmail/src/stab.c

##### Functions

    stab              X

##### Macros

    STABSIZE          X

       1: /*
       2: **  Sendmail
       3: **  Copyright (c) 1983  Eric P. Allman
       4: **  Berkeley, California
       5: **
       6: **  Copyright (c) 1983 Regents of the University of California.
       7: **  All rights reserved.  The Berkeley software License Agreement
       8: **  specifies the terms and conditions for redistribution.
       9: */
      10:
      11: #if !defined(lint) && !defined(NOSCCS)
      12: static char SccsId[] = "@(#)stab.c	5.2 (Berkeley) 6/7/85";
      13: #endif
      14:
      15: # include "sendmail.h"
      16:
      17: /*
      18: **  STAB -- manage the symbol table
      19: **
      20: **	Parameters:
      21: **		name -- the name to be looked up or inserted.
      22: **		type -- the type of symbol.
      23: **		op -- what to do:
      24: **			ST_ENTER -- enter the name if not
      25: **				already present.
      26: **			ST_FIND -- find it only.
      27: **
      28: **	Returns:
      29: **		pointer to a STAB entry for this name.
      30: **		NULL if not found and not entered.
      31: **
      32: **	Side Effects:
      33: **		can update the symbol table.
      34: */
      35:
      36: # define STABSIZE   400
      37:
      38: static STAB *SymTab[STABSIZE];
      39:
      40: STAB *
      41: stab(name, type, op)
      42:     char *name;
      43:     int type;
      44:     int op;
      45: {
      46:     register STAB *s;
      47:     register STAB **ps;
      48:     extern bool sameword();
      49:     register int hfunc;
      50:     register char *p;
      51:     extern char lower();
      52:
      53: # ifdef DEBUG
      54:     if (tTd(36, 5))
      55:         printf("STAB: %s %d ", name, type);
      56: # endif DEBUG
      57:
      58:     /*
      59: 	**  Compute the hashing function
      60: 	**
      61: 	**	We could probably do better....
      62: 	*/
      63:
      64:     hfunc = type;
      65:     for (p = name; *p != '\0'; p++)
      66:         hfunc = (((hfunc << 7) | lower(*p)) & 077777) % STABSIZE;
      67:
      68: # ifdef DEBUG
      69:     if (tTd(36, 9))
      70:         printf("(hfunc=%d) ", hfunc);
      71: # endif DEBUG
      72:
      73:     ps = &SymTab[hfunc];
      74:     while ((s = *ps) != NULL && (!sameword(name, s->s_name) || s->s_type != type))
      75:         ps = &s->s_next;
      76:
      77:     /*
      78: 	**  Dispose of the entry.
      79: 	*/
      80:
      81:     if (s != NULL || op == ST_FIND)
      82:     {
      83: # ifdef DEBUG
      84:         if (tTd(36, 5))
      85:         {
      86:             if (s == NULL)
      87:                 printf("not found\n");
      88:             else
      89:             {
      90:                 long *lp = (long *) s->s_class;
      91:
      92:                 printf("type %d val %lx %lx %lx %lx\n",
      93:                     s->s_type, lp[0], lp[1], lp[2], lp[3]);
      94:             }
      95:         }
      96: # endif DEBUG
      97:         return (s);
      98:     }
      99:
     100:     /*
     101: 	**  Make a new entry and link it in.
     102: 	*/
     103:
     104: # ifdef DEBUG
     105:     if (tTd(36, 5))
     106:         printf("entered\n");
     107: # endif DEBUG
     108:
     109:     /* make new entry */
     110:     s = (STAB *) xalloc(sizeof *s);
     111:     bzero((char *) s, sizeof *s);
     112:     s->s_name = newstr(name);
     113:     makelower(s->s_name);
     114:     s->s_type = type;
     115:
     116:     /* link it in */
     117:     *ps = s;
     118:
     119:     return (s);
     120: }

#### Defined functions

stab defined in line 40; used 13 times

- in /usr/src/usr.sbin/sendmail/src/alias.c line 143, 514
- in /usr/src/usr.sbin/sendmail/src/conf.c line 318
- in /usr/src/usr.sbin/sendmail/src/deliver.c line 710, 725, 741
- in /usr/src/usr.sbin/sendmail/src/main.c line 463-468(2)
- in /usr/src/usr.sbin/sendmail/src/parseaddr.c line 570
- in /usr/src/usr.sbin/sendmail/src/readcf.c line 349, 474, 939
- in /usr/src/usr.sbin/sendmail/src/sendmail.h line 394

#### Defined variables

SccsId defined in line 12; never used
SymTab defined in line 38; used 1 times

- in line 73

#### Defined macros

STABSIZE defined in line 36; used 2 times

- in line 38, 66

Last modified: 1988-02-11 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1053 |