]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/lists.c
Spelling fix: "nick name" -> "nickname"
[ngircd-alex.git] / src / ngircd / lists.c
index c082f1c4c0b767713608355004cb6b41ae3fa14a..6faf311a74f767207c0f2c622cde44e72a924280 100644 (file)
@@ -147,10 +147,8 @@ Lists_Add(struct list_head *h, const char *Mask, time_t ValidUntil,
 
        strlcpy(newelem->mask, Mask, sizeof(newelem->mask));
        if (Reason) {
-               newelem->reason = malloc(strlen(Reason) + 1);
-               if (newelem->reason)
-                       strlcpy(newelem->reason, Reason, strlen(Reason) + 1);
-               else
+               newelem->reason = strdup(Reason);
+               if (!newelem->reason)
                        Log(LOG_EMERG,
                            "Can't allocate memory for new list reason text!");
        }
@@ -285,7 +283,7 @@ Lists_MakeMask(const char *Pattern)
                excl = NULL;
 
        if (!at && !excl) {
-               /* Neither "!" nor "@" found: use string as nick name */
+               /* Neither "!" nor "@" found: use string as nickname */
                strlcpy(TheMask, Pattern, sizeof(TheMask) - 5);
                strlcat(TheMask, "!*@*", sizeof(TheMask));
                return TheMask;
@@ -320,7 +318,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 +349,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;
 }
 
 /**