commit - 4da04640e6429e6cc61ca9dd4c7293b520d4b3bc
commit + 4396936f383cfc8098e43cece8e4b2af8f0a6fa4
blob - a7c97d51bcfc01c047e1e3eb4522c99486561ca3
blob + d8ee7b70e9854603f2834f294380ab6475585140
--- src/ngircd/channel.c
+++ src/ngircd/channel.c
{
struct list_head *h = Channel_GetListInvites(c);
LogDebug("Adding \"%s\" to \"%s\" invite list", mask, Channel_Name(c));
- return Lists_Add(h, mask, onlyonce, who);
+ return Lists_Add(h, mask, time(NULL), who, onlyonce);
}
blob - 247344e508a6e3daf3fc164d1e47ddbdc0e98152
blob + 2ca67e9d444079c00952926a289d6cc1f8a27fcc
--- src/ngircd/lists.c
+++ src/ngircd/lists.c
struct list_elem *next; /** pointer to next list element */
char mask[MASK_LEN]; /** IRC mask */
char *reason; /** Optional "reason" text */
- time_t valid_until; /** 0: unlimited; 1: once; t(>1): until t */
+ time_t valid_until; /** 0: unlimited; t(>0): until t */
+ bool onlyonce;
};
/**
* Get "validity" value stored in list element.
*
* @param list_elem List element.
- * @return Validity: 0=unlimited, 1=once, >1 until this time stamp.
+ * @return Validity: 0=unlimited, >0 until this time stamp.
*/
GLOBAL time_t
Lists_GetValidity(const struct list_elem *e)
}
/**
+ * Get "onlyonce" value stored in list element.
+ *
+ * @param list_elem List element.
+ * @return True if the element was stored for single use, false otherwise.
+ */
+GLOBAL bool
+Lists_GetOnlyOnce(const struct list_elem *e)
+{
+ assert(e != NULL);
+ return e->onlyonce;
+}
+
+/**
* Get first list element of a list.
*
* @param h List head.
*/
bool
Lists_Add(struct list_head *h, const char *Mask, time_t ValidUntil,
- const char *Reason)
+ const char *Reason, bool OnlyOnce = false)
{
struct list_elem *e, *newelem;
else
newelem->reason = NULL;
newelem->valid_until = ValidUntil;
+ newelem->onlyonce = OnlyOnce;
newelem->next = e;
h->first = newelem;
while (e) {
next = e->next;
- if (e->valid_until > 1 && e->valid_until < now) {
+ if (e->valid_until > 0 && e->valid_until < now) {
/* Entry is expired, delete it */
if (e->reason)
Log(LOG_INFO,
blob - db0f11a9603691f9eb64f5fcf90b638c007a0876
blob + 4206151ed06558c22526a7f87eca0acf23fadde9
--- src/ngircd/lists.h
+++ src/ngircd/lists.h
const char *mask));
GLOBAL bool Lists_Add PARAMS((struct list_head *h, const char *Mask,
- time_t ValidUntil, const char *Reason));
+ time_t ValidUntil, const char *Reason, bool OnlyOnce));
GLOBAL void Lists_Del PARAMS((struct list_head *head, const char *Mask));
GLOBAL unsigned long Lists_Count PARAMS((struct list_head *h));
GLOBAL const char *Lists_GetMask PARAMS((const struct list_elem *e));
GLOBAL const char *Lists_GetReason PARAMS((const struct list_elem *e));
GLOBAL time_t Lists_GetValidity PARAMS((const struct list_elem *e));
+GLOBAL bool Lists_GetOnlyOnce PARAMS((const struct list_elem *e));
GLOBAL void Lists_Expire PARAMS((struct list_head *h, const char *ListName));