From db3b671328d0e6890b17c23baf9d4280d086e89b Mon Sep 17 00:00:00 2001 From: vague666 Date: Tue, 5 Jun 2018 14:43:37 +0200 Subject: Added HIDDEN level to ignores --- src/core/ignore.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/core/ignore.c') diff --git a/src/core/ignore.c b/src/core/ignore.c index cec91e6b..8aece6fc 100644 --- a/src/core/ignore.c +++ b/src/core/ignore.c @@ -82,9 +82,9 @@ static int ignore_match_pattern(IGNORE_REC *rec, const char *text) * However we also want to allow NO_ACT combined with levels, so mask it out and * match levels if set. */ #define ignore_match_level(rec, level) \ - (((level & MSGLEVEL_NO_ACT) != 0) ? \ - ((~MSGLEVEL_NO_ACT & level) & (rec)->level) != 0 : \ - ((rec)->level & MSGLEVEL_NO_ACT ? 0 : \ + (((level & (MSGLEVEL_NO_ACT|MSGLEVEL_HIDDEN)) != 0) ? \ + ((~(MSGLEVEL_NO_ACT|MSGLEVEL_HIDDEN) & level) & (rec)->level) != 0 : \ + ((rec)->level & (MSGLEVEL_NO_ACT|MSGLEVEL_HIDDEN) ? 0 : \ (level & (rec)->level) != 0)) #define ignore_match_nickmask(rec, nick, nickmask) \ @@ -212,6 +212,12 @@ IGNORE_REC *ignore_find_full(const char *servertag, const char *mask, const char if (!(flags & IGNORE_FIND_NOACT) && (rec->level & MSGLEVEL_NO_ACT) != 0) continue; + if ((flags & IGNORE_FIND_HIDDEN) && (rec->level & MSGLEVEL_HIDDEN) == 0) + continue; + + if (!(flags & IGNORE_FIND_HIDDEN) && (rec->level & MSGLEVEL_HIDDEN) != 0) + continue; + if ((rec->mask == NULL && mask != NULL) || (rec->mask != NULL && mask == NULL)) continue; @@ -264,6 +270,11 @@ IGNORE_REC *ignore_find_noact(const char *servertag, const char *mask, char **ch return ignore_find_full(servertag, mask, NULL, channels, IGNORE_FIND_NOACT); } +IGNORE_REC *ignore_find_hidden(const char *servertag, const char *mask, char **channels, int hidden) +{ + return ignore_find_full(servertag, mask, NULL, channels, IGNORE_FIND_HIDDEN); +} + static void ignore_set_config(IGNORE_REC *rec) { CONFIG_NODE *node; -- cgit v1.2.3