diff options
author | Kenneth G Raeburn <raeburn@mit.edu> | 1990-11-13 12:02:59 +0000 |
---|---|---|
committer | Kenneth G Raeburn <raeburn@mit.edu> | 1990-11-13 12:02:59 +0000 |
commit | a36a075433165839ec7a02379ad83c03e08498a5 (patch) | |
tree | f6ad43e0f7a6e60f5e65d3e632b49edabf9a9a7a /server/common.c | |
parent | db89d0d2485f01c3d411c87952f2cd09e372f844 (diff) |
C++ conversion and lots of modifications from summer & fall work
Diffstat (limited to 'server/common.c')
-rw-r--r-- | server/common.c | 57 |
1 files changed, 48 insertions, 9 deletions
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 <stdio.h> -#include <zephyr/zsyslog.h> -#include <strings.h> - -extern char *malloc(); +#include <assert.h> +#include <ctype.h> +#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; +} |