Annotation of 43BSD/usr.bin/lint/hash.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)hash.c     1.1     (Berkeley)      3/29/83";
                      3: #endif lint
                      4: 
                      5: /*
                      6:  * Hash function.  Used for pass 2 symbol table and string table,
                      7:  * and structure/union name passing between passes.
                      8:  * The hash function is a modular hash of
                      9:  * the sum of the characters with the sum
                     10:  * rotated before each successive character
                     11:  * is added.
                     12:  * Only 15 bits are used.
                     13:  */
                     14: #ifdef FLEXNAMES
                     15: hashstr(s)
                     16: #else
                     17: hashstr(s, n)
                     18: register n;
                     19: #endif
                     20: register char *s;
                     21: {
                     22:        register i;
                     23: 
                     24:        i = 0;
                     25: #ifdef FLEXNAMES
                     26:        while (*s)
                     27: #else
                     28:        while (n-- > 0 && *s)
                     29: #endif
                     30:                i = (i << 3 | i >> 12 & 0x07) + *s++;
                     31:        return i & 0x7fff;
                     32: }

unix.superglobalmegacorp.com

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