Track MODE in replies

weechat-hashes
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 invex;
uint join; uint join;
uint list; uint list;
uint mode;
uint names; uint names;
uint topic; uint topic;
uint whois; uint whois;

View File

@ -185,12 +185,14 @@ static void commandMode(uint id, char *params) {
ircFormat("MODE %s %s\r\n", self.nick, params); ircFormat("MODE %s %s\r\n", self.nick, params);
} else { } else {
ircFormat("MODE %s\r\n", self.nick); ircFormat("MODE %s\r\n", self.nick);
replies.mode++;
} }
} else { } else {
if (params) { if (params) {
ircFormat("MODE %s %s\r\n", idNames[id], params); ircFormat("MODE %s %s\r\n", idNames[id], params);
} else { } else {
ircFormat("MODE %s\r\n", idNames[id]); 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) { static void handleReplyUserModeIs(struct Message *msg) {
require(msg, false, 2); require(msg, false, 2);
if (!replies.mode) return;
replies.mode--;
char buf[1024] = ""; char buf[1024] = "";
for (char *ch = msg->params[1]; *ch; ++ch) { for (char *ch = msg->params[1]; *ch; ++ch) {
if (*ch == '+') continue; if (*ch == '+') continue;
@ -560,6 +563,9 @@ static const char *ChanModes[256] = {
static void handleReplyChannelModeIs(struct Message *msg) { static void handleReplyChannelModeIs(struct Message *msg) {
require(msg, false, 3); require(msg, false, 3);
if (!replies.mode) return;
replies.mode--;
uint param = 3; uint param = 3;
char buf[1024] = ""; char buf[1024] = "";
for (char *ch = msg->params[2]; *ch; ++ch) { for (char *ch = msg->params[2]; *ch; ++ch) {