		/*
		 * sdbm - ndbm work-alike hashed database library
		 * based on Per-Aake Larson's Dynamic Hashing algorithms. BIT 18 (1978).
		 * author: oz@nexus.yorku.ca
		 * status: public domain. keep it that way.
		 *
		 * hashing routine
		 */
		
		#include "config.h"
		#include "EXTERN.h"
		#include "sdbm.h"
		/*
		 * polynomial conversion ignoring overflows
		 * [this seems to work remarkably well, in fact better
		 * then the ndbm hash function. Replace at your own risk]
		 * use: 65599	nice.
		 *      65587   even better. 
		 */
		long
		sdbm_hash(register char *str, register int len)
        2877    {
        2877    	register unsigned long n = 0;
		
		#ifdef DUFF
		
		#define HASHC	n = *str++ + 65599 * n
		
        2877    	if (len > 0) {
        2853    		register int loop = (len + 8 - 1) >> 3;
		
        2853    		switch(len & (8 - 1)) {
          73    		case 0:	do {
          73    			HASHC;	case 7:	HASHC;
         145    		case 6:	HASHC;	case 5:	HASHC;
         214    		case 4:	HASHC;	case 3:	HASHC;
        2476    		case 2:	HASHC;	case 1:	HASHC;
        2885    			} while (--loop);
				}
		
			}
		#else
			while (len--)
				n = *str++ + 65599 * n;
		#endif
        2877    	return n;
		}
