Index: openssl/crypto/objects/o_names.c |
=================================================================== |
--- openssl/crypto/objects/o_names.c (revision 105093) |
+++ openssl/crypto/objects/o_names.c (working copy) |
@@ -22,7 +22,8 @@ |
/* I use the ex_data stuff to manage the identifiers for the obj_name_types |
* that applications may define. I only really use the free function field. |
*/ |
-static LHASH *names_lh=NULL; |
+DECLARE_LHASH_OF(OBJ_NAME); |
+static LHASH_OF(OBJ_NAME) *names_lh=NULL; |
static int names_type_num=OBJ_NAME_TYPE_NUM; |
typedef struct name_funcs_st |
@@ -46,11 +47,14 @@ |
/* static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); */ |
static int obj_name_cmp(const void *a_void,const void *b_void); |
+static IMPLEMENT_LHASH_HASH_FN(obj_name, OBJ_NAME) |
+static IMPLEMENT_LHASH_COMP_FN(obj_name, OBJ_NAME) |
+ |
int OBJ_NAME_init(void) |
{ |
if (names_lh != NULL) return(1); |
MemCheck_off(); |
- names_lh=lh_new(obj_name_hash, obj_name_cmp); |
+ names_lh=lh_OBJ_NAME_new(); |
MemCheck_on(); |
return(names_lh != NULL); |
} |
@@ -164,7 +168,7 @@ |
for (;;) |
{ |
- ret=(OBJ_NAME *)lh_retrieve(names_lh,&on); |
+ ret=lh_OBJ_NAME_retrieve(names_lh,&on); |
if (ret == NULL) return(NULL); |
if ((ret->alias) && !alias) |
{ |
@@ -200,7 +204,7 @@ |
onp->type=type; |
onp->data=data; |
- ret=(OBJ_NAME *)lh_insert(names_lh,onp); |
+ ret=lh_OBJ_NAME_insert(names_lh,onp); |
if (ret != NULL) |
{ |
/* free things */ |
@@ -217,7 +221,7 @@ |
} |
else |
{ |
- if (lh_error(names_lh)) |
+ if (lh_OBJ_NAME_error(names_lh)) |
{ |
/* ERROR */ |
return(0); |
@@ -235,7 +239,7 @@ |
type&= ~OBJ_NAME_ALIAS; |
on.name=name; |
on.type=type; |
- ret=(OBJ_NAME *)lh_delete(names_lh,&on); |
+ ret=lh_OBJ_NAME_delete(names_lh,&on); |
if (ret != NULL) |
{ |
/* free things */ |
@@ -262,13 +266,13 @@ |
void *arg; |
}; |
-static void do_all_fn(const OBJ_NAME *name,struct doall *d) |
+static void do_all_fn_doall_arg(const OBJ_NAME *name,struct doall *d) |
{ |
if(name->type == d->type) |
d->fn(name,d->arg); |
} |
-static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME *, struct doall *) |
+static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME, struct doall) |
void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg) |
{ |
@@ -278,7 +282,8 @@ |
d.fn=fn; |
d.arg=arg; |
- lh_doall_arg(names_lh,LHASH_DOALL_ARG_FN(do_all_fn),&d); |
+ lh_OBJ_NAME_doall_arg(names_lh, LHASH_DOALL_ARG_FN(do_all_fn), |
+ struct doall, &d); |
} |
struct doall_sorted |
@@ -313,7 +318,7 @@ |
int n; |
d.type=type; |
- d.names=OPENSSL_malloc(lh_num_items(names_lh)*sizeof *d.names); |
+ d.names=OPENSSL_malloc(lh_OBJ_NAME_num_items(names_lh)*sizeof *d.names); |
d.n=0; |
OBJ_NAME_do_all(type,do_all_sorted_fn,&d); |
@@ -327,18 +332,16 @@ |
static int free_type; |
-static void names_lh_free(OBJ_NAME *onp) |
-{ |
- if(onp == NULL) |
+static void names_lh_free_doall(OBJ_NAME *onp) |
+ { |
+ if (onp == NULL) |
return; |
- if ((free_type < 0) || (free_type == onp->type)) |
- { |
+ if (free_type < 0 || free_type == onp->type) |
OBJ_NAME_remove(onp->name,onp->type); |
- } |
} |
-static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME *) |
+static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME) |
static void name_funcs_free(NAME_FUNCS *ptr) |
{ |
@@ -352,18 +355,18 @@ |
if (names_lh == NULL) return; |
free_type=type; |
- down_load=names_lh->down_load; |
- names_lh->down_load=0; |
+ down_load=lh_OBJ_NAME_down_load(names_lh); |
+ lh_OBJ_NAME_down_load(names_lh)=0; |
- lh_doall(names_lh,LHASH_DOALL_FN(names_lh_free)); |
+ lh_OBJ_NAME_doall(names_lh,LHASH_DOALL_FN(names_lh_free)); |
if (type < 0) |
{ |
- lh_free(names_lh); |
+ lh_OBJ_NAME_free(names_lh); |
sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free); |
names_lh=NULL; |
name_funcs_stack = NULL; |
} |
else |
- names_lh->down_load=down_load; |
+ lh_OBJ_NAME_down_load(names_lh)=down_load; |
} |