about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-12-25 19:43:00 +0100
committerAlexander Barton <alex@barton.de>2011-12-25 19:43:00 +0100
commit15fec92ed75c3de0b32c40d005e93e3f61aef77e (patch)
treeb249c2b93f50282a6117d75110688d5e0850093e /src
parent1e4a00f94f32edf5c2240864b7e56f69636312f4 (diff)
downloadngircd-15fec92ed75c3de0b32c40d005e93e3f61aef77e.tar.gz
ngircd-15fec92ed75c3de0b32c40d005e93e3f61aef77e.zip
Update list item, if it already exists
This updates the "validity" (timeout) as well as the "reason" text,
if given.
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/lists.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c
index 11f8e888..27a51dca 100644
--- a/src/ngircd/lists.c
+++ b/src/ngircd/lists.c
@@ -126,8 +126,19 @@ Lists_Add(struct list_head *h, const char *Mask, time_t ValidUntil,
 	assert(h != NULL);
 	assert(Mask != NULL);
 
-	if (Lists_CheckDupeMask(h, Mask))
+	e = Lists_CheckDupeMask(h, Mask);
+	if (e) {
+		e->valid_until = ValidUntil;
+		if (e->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!");
 		return true;
+	}
 
 	e = Lists_GetFirst(h);