about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/ngircd/lists.c19
-rw-r--r--src/ngircd/lists.h1
2 files changed, 17 insertions, 3 deletions
diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c
index c082f1c4..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;
 }
 
 /**
diff --git a/src/ngircd/lists.h b/src/ngircd/lists.h
index cb2e2c1a..24504dfa 100644
--- a/src/ngircd/lists.h
+++ b/src/ngircd/lists.h
@@ -30,6 +30,7 @@ GLOBAL struct list_elem *Lists_GetFirst PARAMS((const struct list_head *));
 GLOBAL struct list_elem *Lists_GetNext PARAMS((const struct list_elem *));
 
 GLOBAL bool Lists_Check PARAMS((struct list_head *head, CLIENT *client));
+GLOBAL char *Lists_CheckReason PARAMS((struct list_head *head, CLIENT *client));
 GLOBAL struct list_elem *Lists_CheckDupeMask PARAMS((const struct list_head *head,
 					const char *mask));