From a36a075433165839ec7a02379ad83c03e08498a5 Mon Sep 17 00:00:00 2001 From: Kenneth G Raeburn Date: Tue, 13 Nov 1990 12:02:59 +0000 Subject: C++ conversion and lots of modifications from summer & fall work --- server/common.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 9 deletions(-) (limited to 'server/common.c') diff --git a/server/common.c b/server/common.c index e61f61e..1d1b7c1 100644 --- a/server/common.c +++ b/server/common.c @@ -15,30 +15,69 @@ #ifndef lint #ifndef SABER -static char rcsid_common_c[] = "$Header$"; +static const char rcsid_common_c[] = + "$Header$"; #endif SABER #endif lint #include -#include -#include - -extern char *malloc(); +#include +#include +#include "zserver.h" /* common routines for the server */ /* copy the string into newly allocated area */ char * -strsave(sp) -char *sp; +strsave (const char *sp) { register char *ret; - if((ret = malloc((unsigned) strlen(sp)+1)) == NULL) { - syslog(LOG_ERR, "no mem strsave'ing"); + if((ret = (char *) xmalloc((unsigned) strlen(sp)+1)) == NULL) { + syslog(LOG_ERR, "no mem strdup'ing"); abort(); } (void) strcpy(ret,sp); return(ret); } + +/* generic string hash function */ + +unsigned long +hash (const char *string) +{ + register int hval = 0; + register char cp; + + while (1) { + cp = *string++; + if (!cp) + break; + hval += cp; + + cp = *string++; + if (!cp) + break; + hval += cp * 9; + + cp = *string++; + if (!cp) + break; + hval += cp * 17; + + cp = *string++; + if (!cp) + break; + hval += cp * 65; + + cp = *string++; + if (!cp) + break; + hval += cp * 129; + + hval += (hval & 0x7fffff) * 256; + hval &= 0x7fffffff; + } + return hval; +} -- cgit v1.2.3