* Get optional "reason" text stored in list element.
*
* @param list_elem List element.
- * @return Pointer to "reason" text or NULL.
+ * @return Pointer to "reason" text or empty string ("").
*/
GLOBAL const char *
Lists_GetReason(const struct list_elem *e)
{
assert(e != NULL);
- return e->reason;
+ return e->reason ? e->reason : "";
}
/**
e = Lists_CheckDupeMask(h, Mask);
if (e) {
e->valid_until = ValidUntil;
- if (e->reason)
+ if (Reason) {
free(e->reason);
- e->reason = malloc(strlen(Reason) + 1);
- if (e->reason)
- strlcpy(e->reason, Reason, strlen(Reason) + 1);
- else
- Log(LOG_EMERG,
- "Can't allocate memory for new list reason text!");
+ e->reason = strdup(Reason);
+ }
return true;
}
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;
}
}
+/**
+ * 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- */