X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=x2p%2Fhash.c;h=8c218b69e5f711e932ccab6354c4edb4091665ad;hb=cb23d5b19261a41b403a114d55551ddac48af175;hp=fa35ba6d167ac330ad0784fac68ad6383a279ecb;hpb=111cb5dec87a3a29d4527c0824eb994817f8d02f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/x2p/hash.c b/x2p/hash.c index fa35ba6..8c218b6 100644 --- a/x2p/hash.c +++ b/x2p/hash.c @@ -1,11 +1,10 @@ -/* $RCSfile: hash.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:20 $ +/* hash.c * - * Copyright (c) 1991-2001, Larry Wall + * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2002, + * 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. - * - * $Log: hash.c,v $ */ #include @@ -13,6 +12,10 @@ #include "a2p.h" #include "util.h" +#ifdef NETWARE +char *savestr(char *str); +#endif + STR * hfetch(register HASH *tb, char *key) { @@ -87,48 +90,10 @@ hstore(register HASH *tb, char *key, STR *val) return FALSE; } -#ifdef NOTUSED -bool -hdelete(register HASH *tb, char *key) -{ - register char *s; - register int i; - register int hash; - register HENT *entry; - register HENT **oentry; - - if (!tb) - return FALSE; - for (s=key, i=0, hash = 0; - /* while */ *s; - s++, i++, hash *= 5) { - hash += *s * coeff[i]; - } - - oentry = &(tb->tbl_array[hash & tb->tbl_max]); - entry = *oentry; - i = 1; - for (; entry; i=0, oentry = &entry->hent_next, entry = entry->hent_next) { - if (entry->hent_hash != hash) /* strings can't be equal */ - continue; - if (strNE(entry->hent_key,key)) /* is this it? */ - continue; - safefree((char*)entry->hent_val); - safefree(entry->hent_key); - *oentry = entry->hent_next; - safefree((char*)entry); - if (i) - tb->tbl_fill--; - return TRUE; - } - return FALSE; -} -#endif - void hsplit(HASH *tb) { - int oldsize = tb->tbl_max + 1; + const int oldsize = tb->tbl_max + 1; register int newsize = oldsize * 2; register int i; register HENT **a; @@ -175,16 +140,6 @@ hnew(void) return tb; } -#ifdef NOTUSED -hshow(register HASH *tb) -{ - fprintf(stderr,"%5d %4d (%2d%%)\n", - tb->tbl_max+1, - tb->tbl_fill, - tb->tbl_fill * 100 / (tb->tbl_max+1)); -} -#endif - int hiterinit(register HASH *tb) { @@ -192,38 +147,3 @@ hiterinit(register HASH *tb) tb->tbl_eiter = Null(HENT*); return tb->tbl_fill; } - -HENT * -hiternext(register HASH *tb) -{ - register HENT *entry; - - entry = tb->tbl_eiter; - do { - if (entry) - entry = entry->hent_next; - if (!entry) { - tb->tbl_riter++; - if (tb->tbl_riter > tb->tbl_max) { - tb->tbl_riter = -1; - break; - } - entry = tb->tbl_array[tb->tbl_riter]; - } - } while (!entry); - - tb->tbl_eiter = entry; - return entry; -} - -char * -hiterkey(register HENT *entry) -{ - return entry->hent_key; -} - -STR * -hiterval(register HENT *entry) -{ - return entry->hent_val; -}