X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Flists.c;h=4f57ca73521f6b65f568d0aefa9c60b844a685c6;hb=b6f19ea8feceeb2246995222f03790e6f00b0dfd;hp=fd86f3017efabea10175054619177b982f2a4670;hpb=abfc5c6e27bcabec450b7e91ebc0bdca48ac8ef6;p=ngircd-alex.git diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c index fd86f301..4f57ca73 100644 --- a/src/ngircd/lists.c +++ b/src/ngircd/lists.c @@ -320,7 +320,20 @@ Lists_MakeMask(const char *Pattern) * @return true if client is listed, false if not. */ bool -Lists_Check( struct list_head *h, CLIENT *Client) +Lists_Check(struct list_head *h, CLIENT *Client) +{ + return Lists_CheckReason(h, Client) != NULL; +} + +/** + * Check if a client is listed in a list and return the "reason". + * + * @param h List head. + * @param Client Client to check. + * @return true if client is listed, false if not. + */ +char * +Lists_CheckReason(struct list_head *h, CLIENT *Client) { struct list_elem *e, *last, *next; @@ -338,13 +351,13 @@ Lists_Check( struct list_head *h, CLIENT *Client) e->mask); Lists_Unlink(h, last, e); } - return true; + return e->reason ? e->reason : ""; } last = e; e = next; } - return false; + return NULL; } /** @@ -385,4 +398,26 @@ Lists_Expire(struct list_head *h, const char *ListName) } } +/** + * Return the number of entries of a list. + * + * @param h List head. + * @return Number of items. + */ +GLOBAL unsigned long +Lists_Count(struct list_head *h) +{ + struct list_elem *e; + unsigned long count = 0; + + assert(h != NULL); + + e = h->first; + while (e) { + count++; + e = e->next; + } + return count; +} + /* -eof- */