diff options
Diffstat (limited to 'litterbox.c')
-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"); |