diff options
| -rw-r--r-- | chat.c | 2 | ||||
| -rw-r--r-- | chat.h | 4 | ||||
| -rw-r--r-- | command.c | 6 | ||||
| -rw-r--r-- | handle.c | 16 | ||||
| -rw-r--r-- | irc.c | 3 | 
5 files changed, 15 insertions, 16 deletions
@@ -337,7 +337,7 @@ int main(int argc, char *argv[]) {  		.cmd = "QUIT",  		.params[0] = self.quit,  	}; -	handle(msg); +	handle(&msg);  	ircClose();  	logClose(); @@ -155,7 +155,7 @@ enum Tag {  	TagCap,  }; -enum { ParamCap = 15 }; +enum { ParamCap = 254 };  struct Message {  	char *tags[TagCap];  	char *nick; @@ -204,7 +204,7 @@ extern struct Replies {  	uint whois;  } replies; -void handle(struct Message msg); +void handle(struct Message *msg);  void command(uint id, char *input);  const char *commandIsPrivmsg(uint id, const char *input);  const char *commandIsNotice(uint id, const char *input); @@ -61,7 +61,7 @@ static void echoMessage(char *cmd, uint id, char *params) {  		.params[0] = idNames[id],  		.params[1] = params,  	}; -	handle(msg); +	handle(&msg);  }  static void splitMessage(char *cmd, uint id, char *params) { @@ -213,9 +213,7 @@ static void channelListMode(uint id, char pm, char l, const char *params) {  	for (const char *ch = params; *ch; ++ch) {  		if (*ch == ' ') count++;  	} -	char modes[ParamCap - 2 + 1] = { -		l, l, l, l, l, l, l, l, l, l, l, l, l, '\0' -	}; +	char modes[13 + 1] = { l, l, l, l, l, l, l, l, l, l, l, l, l, '\0' };  	ircFormat("MODE %s %c%.*s %s\r\n", idNames[id], pm, count, modes, params);  } @@ -1228,17 +1228,17 @@ static int compar(const void *cmd, const void *_handler) {  	return strcmp(cmd, handler->cmd);  } -void handle(struct Message msg) { -	if (!msg.cmd) return; -	if (msg.tags[TagPos]) { -		self.pos = strtoull(msg.tags[TagPos], NULL, 10); +void handle(struct Message *msg) { +	if (!msg->cmd) return; +	if (msg->tags[TagPos]) { +		self.pos = strtoull(msg->tags[TagPos], NULL, 10);  	}  	const struct Handler *handler = bsearch( -		msg.cmd, Handlers, ARRAY_LEN(Handlers), sizeof(*handler), compar +		msg->cmd, Handlers, ARRAY_LEN(Handlers), sizeof(*handler), compar  	);  	if (handler) { -		handler->fn(&msg); -	} else if (strcmp(msg.cmd, "400") >= 0 && strcmp(msg.cmd, "599") <= 0) { -		handleErrorGeneric(&msg); +		handler->fn(msg); +	} else if (strcmp(msg->cmd, "400") >= 0 && strcmp(msg->cmd, "599") <= 0) { +		handleErrorGeneric(msg);  	}  } @@ -279,7 +279,8 @@ void ircRecv(void) {  		if (!crlf) break;  		*crlf = '\0';  		debug(">>", line); -		handle(parse(line)); +		struct Message msg = parse(line); +		handle(&msg);  		line = crlf + 2;  	}  | 
