diff options
| author | Alexander Barton <alex@barton.de> | 2011-12-25 19:43:00 +0100 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2011-12-25 19:43:00 +0100 |
| commit | 15fec92ed75c3de0b32c40d005e93e3f61aef77e (patch) | |
| tree | b249c2b93f50282a6117d75110688d5e0850093e /src | |
| parent | 1e4a00f94f32edf5c2240864b7e56f69636312f4 (diff) | |
| download | ngircd-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.c | 13 |
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); |