diff options
author | June McEnroe <june@causal.agency> | 2021-01-01 20:09:10 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2021-01-01 20:09:10 -0500 |
commit | 4b883177dc025db24473e62469f97631a12ad536 (patch) | |
tree | 0039251bc3093c68c44eb95fb7a1051168fe3acf /chat.h | |
parent | Factor out reply count checking and decrementing (diff) | |
download | catgirl-4b883177dc025db24473e62469f97631a12ad536.tar.gz catgirl-4b883177dc025db24473e62469f97631a12ad536.zip |
Split ignore fields to avoid over-eager * matching
Split ignore fields and match each separately to avoid an early * eagerly matching across several fields. For example, "* JOIN * *" should not match messages which happen to contain the word "JOIN" followed by two other words. Ignore capacity is reduced to 64 to keep the size of the array the same. I don't think it's an issue.
Diffstat (limited to 'chat.h')
-rw-r--r-- | chat.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/chat.h b/chat.h index c7af680..b06d383 100644 --- a/chat.h +++ b/chat.h @@ -353,13 +353,16 @@ void urlOpenCount(uint id, uint count); void urlOpenMatch(uint id, const char *str); void urlCopyMatch(uint id, const char *str); -enum { IgnoreCap = 256 }; +enum { IgnoreCap = 64 }; extern struct Ignore { - size_t len; - char *patterns[IgnoreCap]; -} ignore; -const char *ignoreAdd(const char *pattern); -bool ignoreRemove(const char *pattern); + char *mask; + char *cmd; + char *chan; + char *mesg; +} ignores[IgnoreCap]; +struct Ignore ignoreParse(char *pattern); +struct Ignore ignoreAdd(const char *pattern); +bool ignoreRemove(struct Ignore ignore); enum Heat ignoreCheck(enum Heat heat, uint id, const struct Message *msg); extern bool logEnable; |