Track MODE in replies

master
C. McEnroe 2020-03-23 16:52:24 -04:00
parent 35ae4121cb
commit 4f40ace9d4
3 changed files with 9 additions and 0 deletions

1
chat.h
View File

@ -187,6 +187,7 @@ extern struct Replies {
uint invex;
uint join;
uint list;
uint mode;
uint names;
uint topic;
uint whois;

View File

@ -185,12 +185,14 @@ static void commandMode(uint id, char *params) {
ircFormat("MODE %s %s\r\n", self.nick, params);
} else {
ircFormat("MODE %s\r\n", self.nick);
replies.mode++;
}
} else {
if (params) {
ircFormat("MODE %s %s\r\n", idNames[id], params);
} else {
ircFormat("MODE %s\r\n", idNames[id]);
replies.mode++;
}
}
}

View File

@ -527,6 +527,9 @@ static const char *UserModes[256] = {
static void handleReplyUserModeIs(struct Message *msg) {
require(msg, false, 2);
if (!replies.mode) return;
replies.mode--;
char buf[1024] = "";
for (char *ch = msg->params[1]; *ch; ++ch) {
if (*ch == '+') continue;
@ -560,6 +563,9 @@ static const char *ChanModes[256] = {
static void handleReplyChannelModeIs(struct Message *msg) {
require(msg, false, 3);
if (!replies.mode) return;
replies.mode--;
uint param = 3;
char buf[1024] = "";
for (char *ch = msg->params[2]; *ch; ++ch) {