X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Flists.c;h=63c16b0da1ed268af0a7f42bd6e49fe22a13da1a;hp=8e120bfeb16a059bf17d043dd440bd69c587cfe7;hb=ae5ebfb9f0dc1b628a5eebbb39615b3483fe05db;hpb=2b95c69ea19c6711bb98ee048ee71cee94c5dde9 diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c index 8e120bfe..63c16b0d 100644 --- a/src/ngircd/lists.c +++ b/src/ngircd/lists.c @@ -316,22 +316,16 @@ bool Lists_Check( struct list_head *h, CLIENT *Client) { struct list_elem *e, *last, *next; + time_t now; assert(h != NULL); e = h->first; last = NULL; + now = time(NULL); while (e) { next = e->next; - if (e->valid_until > 1 && e->valid_until < time(NULL)) { - /* Entry is expired, delete it */ - LogDebug("Deleted \"%s\" from list (expired).", - e->mask); - Lists_Unlink(h, last, e); - e = next; - continue; - } if (Match(e->mask, Client_Mask(Client))) { if (e->valid_until == 1) { /* Entry is valid only once, delete it */ @@ -348,4 +342,42 @@ Lists_Check( struct list_head *h, CLIENT *Client) return false; } +/** + * Check list and purge expired entries. + * + * @param h List head. + */ +GLOBAL void +Lists_Expire(struct list_head *h, const char *ListName) +{ + struct list_elem *e, *last, *next; + time_t now; + + assert(h != NULL); + + e = h->first; + last = NULL; + now = time(NULL); + + while (e) { + next = e->next; + if (e->valid_until > 1 && e->valid_until < now) { + /* Entry is expired, delete it */ + if (e->reason) + Log(LOG_INFO, + "Deleted \"%s\" (\"%s\") from %s list (expired).", + e->mask, e->reason, ListName); + else + Log(LOG_INFO, + "Deleted \"%s\" from %s list (expired).", + e->mask, ListName); + Lists_Unlink(h, last, e); + e = next; + continue; + } + last = e; + e = next; + } +} + /* -eof- */