summaryrefslogtreecommitdiff
path: root/src/irc/notifylist/notifylist.h
blob: 86a30bf4fd230eb9c5d87569215f886ac653cf6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef __NOTIFYLIST_H
#define __NOTIFYLIST_H

typedef struct {
	char *mask; /* nick part must not contain wildcards */
	char **ircnets; /* if non-NULL, check only from these irc networks */

	/* notify when AWAY status changes (uses /USERHOST) */
	unsigned int away_check:1;
	/* notify when idle time is reset and it was bigger than this
	   (uses /WHOIS and PRIVMSG events) */
	int idle_check_time;
} NOTIFYLIST_REC;

extern GSList *notifies;

void notifylist_init(void);
void notifylist_deinit(void);

NOTIFYLIST_REC *notifylist_add(const char *mask, const char *ircnets,
			       int away_check, int idle_check_time);
void notifylist_remove(const char *mask);

IRC_SERVER_REC *notifylist_ison(const char *nick, const char *serverlist);
int notifylist_ison_server(IRC_SERVER_REC *server, const char *nick);

/* If `ircnet' is "*", it doesn't matter at all. */
NOTIFYLIST_REC *notifylist_find(const char *mask, const char *ircnet);

int notifylist_ircnets_match(NOTIFYLIST_REC *rec, const char *ircnet);

#endif