diff options
author | ailin-nemui <ailin-nemui@users.noreply.github.com> | 2018-06-15 14:28:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-15 14:28:09 +0200 |
commit | b382bd12328c794b038a3dfd66adeec17f0b9324 (patch) | |
tree | bef59783a5d2a3b6e721c8c74c231d3234c3916f /src/core | |
parent | daf6ce86cb668d24f278dca91846fc7b8619757d (diff) | |
parent | ba2554dd1485259b95b4b37f281c989086b24739 (diff) | |
download | irssi-b382bd12328c794b038a3dfd66adeec17f0b9324.zip |
Added HIDDEN level to ignores
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/ignore.c | 18 | ||||
-rw-r--r-- | src/core/ignore.h | 2 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/core/ignore.c b/src/core/ignore.c index cec91e6b..8745c434 100644 --- a/src/core/ignore.c +++ b/src/core/ignore.c @@ -81,10 +81,11 @@ static int ignore_match_pattern(IGNORE_REC *rec, const char *text) * used as a flag to indicate it should only look at ignore items with NO_ACT. * However we also want to allow NO_ACT combined with levels, so mask it out and * match levels if set. */ +#define FLAG_MSGLEVELS ( MSGLEVEL_NO_ACT | MSGLEVEL_HIDDEN ) #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 & FLAG_MSGLEVELS) != 0) ? \ + ((~FLAG_MSGLEVELS & level) & (rec)->level) != 0 : \ + ((rec)->level & FLAG_MSGLEVELS ? 0 : \ (level & (rec)->level) != 0)) #define ignore_match_nickmask(rec, nick, nickmask) \ @@ -212,6 +213,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 +271,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; diff --git a/src/core/ignore.h b/src/core/ignore.h index 31171b58..958aa801 100644 --- a/src/core/ignore.h +++ b/src/core/ignore.h @@ -29,6 +29,7 @@ int ignore_check(SERVER_REC *server, const char *nick, const char *host, enum { IGNORE_FIND_PATTERN = 0x01, /* Match the pattern */ IGNORE_FIND_NOACT = 0x02, /* Exclude the targets with NOACT level */ + IGNORE_FIND_HIDDEN = 0x04, /* Exclude the targets with HIDDEN level */ }; IGNORE_REC *ignore_find_full (const char *servertag, const char *mask, const char *pattern, @@ -38,6 +39,7 @@ IGNORE_REC *ignore_find_full (const char *servertag, const char *mask, const cha IGNORE_REC *ignore_find(const char *servertag, const char *mask, char **channels); IGNORE_REC *ignore_find_noact(const char *servertag, const char *mask, char **channels, int noact); +IGNORE_REC *ignore_find_hidden(const char *servertag, const char *mask, char **channels, int hidden); void ignore_add_rec(IGNORE_REC *rec); void ignore_update_rec(IGNORE_REC *rec); |