LHASH revamp. make depend.
[openssl.git] / crypto / lhash / lhash.c
index 0a16fcf27d58904b26a556e044c92b453d13d87e..47f748081bba2a3165bc981d179ad018bf53f245 100644 (file)
 #include <openssl/crypto.h>
 #include <openssl/lhash.h>
 
-const char *lh_version="lhash" OPENSSL_VERSION_PTEXT;
+const char lh_version[]="lhash" OPENSSL_VERSION_PTEXT;
 
 #undef MIN_NODES 
 #define MIN_NODES      16
 #define UP_LOAD                (2*LH_LOAD_MULT) /* load times 256  (default 2) */
 #define DOWN_LOAD      (LH_LOAD_MULT)   /* load times 256  (default 1) */
 
-static void expand(LHASH *lh);
-static void contract(LHASH *lh);
-static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash);
+static void expand(_LHASH *lh);
+static void contract(_LHASH *lh);
+static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash);
 
-LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)
+_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)
        {
-       LHASH *ret;
+       _LHASH *ret;
        int i;
 
-       if ((ret=(LHASH *)OPENSSL_malloc(sizeof(LHASH))) == NULL)
+       if ((ret=OPENSSL_malloc(sizeof(_LHASH))) == NULL)
                goto err0;
-       if ((ret->b=(LHASH_NODE **)OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL)
+       if ((ret->b=OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL)
                goto err1;
        for (i=0; i<MIN_NODES; i++)
                ret->b[i]=NULL;
@@ -154,7 +154,7 @@ err0:
        return(NULL);
        }
 
-void lh_free(LHASH *lh)
+void lh_free(_LHASH *lh)
        {
        unsigned int i;
        LHASH_NODE *n,*nn;
@@ -176,11 +176,11 @@ void lh_free(LHASH *lh)
        OPENSSL_free(lh);
        }
 
-void *lh_insert(LHASH *lh, const void *data)
+void *lh_insert(_LHASH *lh, void *data)
        {
        unsigned long hash;
        LHASH_NODE *nn,**rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        if (lh->up_load <= (lh->num_items*LH_LOAD_MULT/lh->num_nodes))
@@ -211,14 +211,14 @@ void *lh_insert(LHASH *lh, const void *data)
                (*rn)->data=data;
                lh->num_replace++;
                }
-       return((void *)ret);
+       return(ret);
        }
 
-void *lh_delete(LHASH *lh, const void *data)
+void *lh_delete(_LHASH *lh, const void *data)
        {
        unsigned long hash;
        LHASH_NODE *nn,**rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        rn=getrn(lh,data,&hash);
@@ -242,14 +242,14 @@ void *lh_delete(LHASH *lh, const void *data)
                (lh->down_load >= (lh->num_items*LH_LOAD_MULT/lh->num_nodes)))
                contract(lh);
 
-       return((void *)ret);
+       return(ret);
        }
 
-void *lh_retrieve(LHASH *lh, const void *data)
+void *lh_retrieve(_LHASH *lh, const void *data)
        {
        unsigned long hash;
        LHASH_NODE **rn;
-       const void *ret;
+       void *ret;
 
        lh->error=0;
        rn=getrn(lh,data,&hash);
@@ -264,15 +264,18 @@ void *lh_retrieve(LHASH *lh, const void *data)
                ret= (*rn)->data;
                lh->num_retrieve++;
                }
-       return((void *)ret);
+       return(ret);
        }
 
-static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
+static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
                          LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
        {
        int i;
        LHASH_NODE *a,*n;
 
+       if (lh == NULL)
+               return;
+
        /* reverse the order so we search from 'top to bottom'
         * We were having memory leaks otherwise */
        for (i=lh->num_nodes-1; i>=0; i--)
@@ -282,6 +285,8 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
                        {
                        /* 28/05/91 - eay - n added so items can be deleted
                         * via lh_doall */
+                       /* 22/05/08 - ben - eh? since a is not passed,
+                        * this should not be needed */
                        n=a->next;
                        if(use_arg)
                                func_arg(a->data,arg);
@@ -292,17 +297,17 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
                }
        }
 
-void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func)
+void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
        {
        doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);
        }
 
-void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
+void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
        {
        doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg);
        }
 
-static void expand(LHASH *lh)
+static void expand(_LHASH *lh)
        {
        LHASH_NODE **n,**n1,**n2,*np;
        unsigned int p,i,j;
@@ -339,7 +344,7 @@ static void expand(LHASH *lh)
                {
                j=(int)lh->num_alloc_nodes*2;
                n=(LHASH_NODE **)OPENSSL_realloc(lh->b,
-                       (unsigned int)sizeof(LHASH_NODE *)*j);
+                       (int)(sizeof(LHASH_NODE *)*j));
                if (n == NULL)
                        {
 /*                     fputs("realloc error in lhash",stderr); */
@@ -358,7 +363,7 @@ static void expand(LHASH *lh)
                }
        }
 
-static void contract(LHASH *lh)
+static void contract(_LHASH *lh)
        {
        LHASH_NODE **n,*n1,*np;
 
@@ -397,11 +402,11 @@ static void contract(LHASH *lh)
                }
        }
 
-static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash)
+static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash)
        {
        LHASH_NODE **ret,*n1;
        unsigned long hash,nn;
-       int (*cf)();
+       LHASH_COMP_FN_TYPE cf;
 
        hash=(*(lh->hash))(data);
        lh->num_hash_calls++;
@@ -464,7 +469,7 @@ unsigned long lh_strhash(const char *c)
        return((ret>>16)^ret);
        }
 
-unsigned long lh_num_items(const LHASH *lh)
+unsigned long lh_num_items(const _LHASH *lh)
        {
        return lh ? lh->num_items : 0;
        }