- if (duf_size) {
- duf_size <<= 1;
- duf_list = realloc(duf_list, duf_size*sizeof(del_user_func_t));
- } else {
- duf_size = 8;
- duf_list = malloc(duf_size*sizeof(del_user_func_t));
- }
+ if (duf_size) {
+ duf_size <<= 1;
+ duf_list = realloc(duf_list, duf_size*sizeof(del_user_func_t));
+ duf_list_extra = realloc(duf_list_extra, duf_size*sizeof(void*));
+ } else {
+ duf_size = 8;
+ duf_list = malloc(duf_size*sizeof(del_user_func_t));
+ duf_list_extra = malloc(duf_size*sizeof(void*));
+ }
+ }
+ duf_list[duf_used] = handler;
+ duf_list_extra[duf_used++] = extra;
+}
+
+void
+call_del_user_funcs(struct userNode *user, struct userNode *killer, const char *why)
+{
+ unsigned int i;
+
+ for (i = 0; i < duf_used; ++i)
+ {
+ duf_list[i](user, killer, why, duf_list_extra[i]);