diff options
author | June McEnroe <june@causal.agency> | 2020-04-05 11:27:51 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-04-05 11:27:51 -0400 |
commit | 8a4a9999baa28b6ace84fc1a5be69f8c71f3f88e (patch) | |
tree | e8ef22bcb8cbc927cde9c6bbf842a0f8693dc4fb | |
parent | Add unscoop matchers for ban/unban events (diff) | |
download | litterbox-8a4a9999baa28b6ace84fc1a5be69f8c71f3f88e.tar.gz litterbox-8a4a9999baa28b6ace84fc1a5be69f8c71f3f88e.zip |
Parse mode types from ISUPPORT
Diffstat (limited to '')
-rw-r--r-- | litterbox.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/litterbox.c b/litterbox.c index d0cafef..aa6ca1a 100644 --- a/litterbox.c +++ b/litterbox.c @@ -122,6 +122,10 @@ static char *self; static char *network; static char *chanTypes; static char *prefixes; +static char *prefixModes; +static char *listModes; +static char *paramModes; +static char *setParamModes; static void set(char **field, const char *value) { free(*field); @@ -172,9 +176,13 @@ static void handleReplyISupport(struct Message *msg) { } else if (!strcmp(key, "CHANTYPES")) { set(&chanTypes, msg->params[i]); } else if (!strcmp(key, "PREFIX")) { - strsep(&msg->params[i], ")"); - if (!msg->params[i]) continue; + strsep(&msg->params[i], "("); + set(&prefixModes, strsep(&msg->params[i], ")")); set(&prefixes, msg->params[i]); + } else if (!strcmp(key, "CHANMODES")) { + set(&listModes, strsep(&msg->params[i], ",")); + set(¶mModes, strsep(&msg->params[i], ",")); + set(&setParamModes, strsep(&msg->params[i], ",")); } } } @@ -759,6 +767,10 @@ int main(int argc, char *argv[]) { set(&network, (defaultNetwork ? defaultNetwork : host)); set(&chanTypes, "#&"); set(&prefixes, "@+"); + set(&prefixModes, "ov"); + set(&listModes, "b"); + set(¶mModes, "k"); + set(&setParamModes, "l"); client = tls_client(); if (!client) errx(EX_SOFTWARE, "tls_client"); |