aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorC. McEnroe <june@causal.agency>2020-02-15 05:29:54 -0500
committerC. McEnroe <june@causal.agency>2020-02-15 05:29:54 -0500
commit9b1ab699084190b23953bff7f4ce5410808ab850 (patch)
tree8795886c47dd89d000831f5877676c4a18c83ec7
parentShow prefixes in NAMES and WHOIS replies (diff)
downloadcatgirl-9b1ab699084190b23953bff7f4ce5410808ab850.tar.gz
catgirl-9b1ab699084190b23953bff7f4ce5410808ab850.zip
Track PREFIX modes and CHANMODES
-rw-r--r--chat.h5
-rw-r--r--handle.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/chat.h b/chat.h
index bb15b3d..ade2ffc 100644
--- a/chat.h
+++ b/chat.h
@@ -87,6 +87,11 @@ extern struct Network {
char *name;
char *chanTypes;
char *prefixes;
+ char *prefixModes;
+ char *listModes;
+ char *paramModes;
+ char *setParamModes;
+ char *channelModes;
} network;
extern struct Self {
diff --git a/handle.c b/handle.c
index 6447634..b68ae45 100644
--- a/handle.c
+++ b/handle.c
@@ -220,9 +220,14 @@ static void handleReplyISupport(struct Message *msg) {
} else if (!strcmp(key, "CHANTYPES")) {
set(&network.chanTypes, msg->params[i]);
} else if (!strcmp(key, "PREFIX")) {
- strsep(&msg->params[i], ")");
- if (!msg->params[i]) continue;
+ strsep(&msg->params[i], "(");
+ set(&network.prefixModes, strsep(&msg->params[i], ")"));
set(&network.prefixes, msg->params[i]);
+ } else if (!strcmp(key, "CHANMODES")) {
+ set(&network.listModes, strsep(&msg->params[i], ","));
+ set(&network.paramModes, strsep(&msg->params[i], ","));
+ set(&network.setParamModes, strsep(&msg->params[i], ","));
+ set(&network.channelModes, strsep(&msg->params[i], ","));
}
}
}