Add generic error reply handler
This should have been in way earlier...
This commit is contained in:
		
							parent
							
								
									56de4668ac
								
							
						
					
					
						commit
						f494fe6edb
					
				
							
								
								
									
										37
									
								
								handle.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								handle.c
									
									
									
									
									
								
							| @ -86,10 +86,30 @@ static const time_t *tagTime(const struct Message *msg) { | |||||||
| 
 | 
 | ||||||
| typedef void Handler(struct Message *msg); | typedef void Handler(struct Message *msg); | ||||||
| 
 | 
 | ||||||
|  | static void handleErrorGeneric(struct Message *msg) { | ||||||
|  | 	require(msg, false, 2); | ||||||
|  | 	if (msg->params[2]) { | ||||||
|  | 		size_t len = strlen(msg->params[2]); | ||||||
|  | 		if (msg->params[2][len - 1] == '.') msg->params[2][len - 1] = '\0'; | ||||||
|  | 		uiFormat( | ||||||
|  | 			Network, Warm, tagTime(msg), | ||||||
|  | 			"%s: %s", msg->params[2], msg->params[1] | ||||||
|  | 		); | ||||||
|  | 	} else { | ||||||
|  | 		uiFormat( | ||||||
|  | 			Network, Warm, tagTime(msg), | ||||||
|  | 			"%s", msg->params[1] | ||||||
|  | 		); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void handleErrorNicknameInUse(struct Message *msg) { | static void handleErrorNicknameInUse(struct Message *msg) { | ||||||
| 	require(msg, false, 2); | 	require(msg, false, 2); | ||||||
| 	if (strcmp(self.nick, "*")) return; | 	if (!strcmp(self.nick, "*")) { | ||||||
| 	ircFormat("NICK :%s_\r\n", msg->params[1]); | 		ircFormat("NICK :%s_\r\n", msg->params[1]); | ||||||
|  | 	} else { | ||||||
|  | 		handleErrorGeneric(msg); | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void handleErrorErroneousNickname(struct Message *msg) { | static void handleErrorErroneousNickname(struct Message *msg) { | ||||||
| @ -97,10 +117,7 @@ static void handleErrorErroneousNickname(struct Message *msg) { | |||||||
| 	if (!strcmp(self.nick, "*")) { | 	if (!strcmp(self.nick, "*")) { | ||||||
| 		errx(EX_CONFIG, "%s: %s", msg->params[1], msg->params[2]); | 		errx(EX_CONFIG, "%s: %s", msg->params[1], msg->params[2]); | ||||||
| 	} else { | 	} else { | ||||||
| 		uiFormat( | 		handleErrorGeneric(msg); | ||||||
| 			Network, Warm, tagTime(msg), |  | ||||||
| 			"%s: %s", msg->params[2], msg->params[1] |  | ||||||
| 		); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -785,5 +802,11 @@ void handle(struct Message msg) { | |||||||
| 	const struct Handler *handler = bsearch( | 	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); | 	if (handler) { | ||||||
|  | 		handler->fn(&msg); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	if (strcmp(msg.cmd, "400") >= 0 && strcmp(msg.cmd, "599") <= 0) { | ||||||
|  | 		handleErrorGeneric(&msg); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user