int hchannel_del(hchannel *hchan) { hchannel *tmp, **ptr = &hchannels; for (;*ptr;ptr = &(*ptr)->next) if (*ptr == hchan) break; assert(*ptr != NULL); tmp = hchan->next; hcensor_del_all(&(hchan->censor)); hterm_del_all(&hchan->channel_hterms); htopic_del_all(&hchan->topic); hstat_del_channel(hchan); free(hchan->stats); while (hchan->htickets) hticket_del(hchan->htickets, hchan); localpartchannel(helpmodnick, hchan->real_channel, "Channel Removed"); free(hchan); *ptr = tmp; return 0; }
void hticket_remove_expired(void) { hchannel *hchan; hticket **tmp; for (hchan = hchannels;hchan;hchan = hchan->next) { tmp = &hchan->htickets; while (*tmp) if ((*tmp)->time_expiration < time(NULL)) hticket_del(*tmp, hchan); else tmp = &(*tmp)->next; } }