diff --git a/src/callback.c b/src/callback.c index 2cd1ef7888f6970abead994c67f98e97d1daf5ab..a760a8a843ac23d835fa7c6419f2285f10eaf461 100644 --- a/src/callback.c +++ b/src/callback.c @@ -31,12 +31,12 @@ static struct callback *get_free_callback() { int e; struct callback_block *tmp2; - tmp1=ALLOC_STRUCT(callback_block); + tmp2=ALLOC_STRUCT(callback_block); for(e=0;e<sizeof(CALLBACK_CHUNK);e++) { - tmp1->callbacks[e].next=tmp; - tmp=tmp1->callbacks+e; + tmp2->callbacks[e].next=tmp; + tmp=tmp2->callbacks+e; } } free_callbacks=tmp->next; @@ -63,9 +63,9 @@ void call_callback(struct callback **ptr) } struct callback *add_to_callback(struct callback **ptr, - callback call, - void *arg, - callback free_func) + callback_func call, + void *arg, + callback_func free_func) { struct callback *l; l=get_free_callback(); @@ -91,8 +91,8 @@ void free_callback(struct callback **ptr) struct callback *l; while(l=*ptr) { - if(l->call.arg && l->call.free_func) - l->call.free_func(l, l->call.arg); + if(l->arg && l->free_func) + l->free_func(l, l->arg); *ptr=l->next; l->next=free_callbacks; free_callbacks=l; diff --git a/src/callback.h b/src/callback.h index 46c4e152a704d6e99b95204c5cccfb3a2ddc5605..6ba2257f7081b7ddfacd91f76b504203e4941def 100644 --- a/src/callback.h +++ b/src/callback.h @@ -8,16 +8,20 @@ #include "array.h" +struct callback; + +typedef void (*callback_func)(struct callback *, void *); + /* Prototypes begin here */ -struct callback_list; +struct callback; struct callback_block; -void call_callback_list(struct callback_list **ptr); -struct callback_list *add_to_callback_list(struct callback_list **ptr, - callback call, - void *arg); -void *remove_callback(struct callback_list *l); -void free_callback_list(struct callback_list **ptr); -void call_and_free_callback_list(struct callback_list **ptr); +void call_callback(struct callback **ptr); +struct callback *add_to_callback(struct callback **ptr, + callback_func call, + void *arg, + callback_func free_func); +void *remove_callback(struct callback *l); +void free_callback(struct callback **ptr); /* Prototypes end here */ #endif