about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-20 01:38:31 -0500
committerJune McEnroe <june@causal.agency>2020-02-20 01:38:31 -0500
commitf494fe6edbd661f79fa4862e87e6e1c4c960b416 (patch)
treec639817a93202d0fe0bb008b0d2b608a00385262
parentAdd /ban, /unban and handle ban list replies (diff)
downloadcatgirl-f494fe6edbd661f79fa4862e87e6e1c4c960b416.tar.gz
catgirl-f494fe6edbd661f79fa4862e87e6e1c4c960b416.zip
Add generic error reply handler
This should have been in way earlier...
Diffstat (limited to '')
-rw-r--r--handle.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/handle.c b/handle.c
index 4bfeb9f..61e3d50 100644
--- a/handle.c
+++ b/handle.c
@@ -86,10 +86,30 @@ static const time_t *tagTime(const 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) {
 	require(msg, false, 2);
-	if (strcmp(self.nick, "*")) return;
-	ircFormat("NICK :%s_\r\n", msg->params[1]);
+	if (!strcmp(self.nick, "*")) {
+		ircFormat("NICK :%s_\r\n", msg->params[1]);
+	} else {
+		handleErrorGeneric(msg);
+	}
 }
 
 static void handleErrorErroneousNickname(struct Message *msg) {
@@ -97,10 +117,7 @@ static void handleErrorErroneousNickname(struct Message *msg) {
 	if (!strcmp(self.nick, "*")) {
 		errx(EX_CONFIG, "%s: %s", msg->params[1], msg->params[2]);
 	} else {
-		uiFormat(
-			Network, Warm, tagTime(msg),
-			"%s: %s", msg->params[2], msg->params[1]
-		);
+		handleErrorGeneric(msg);
 	}
 }
 
@@ -785,5 +802,11 @@ void handle(struct Message msg) {
 	const struct Handler *handler = bsearch(
 		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);
+	}
 }
d>June McEnroe 2019-02-20Factor out html.sh and produce html for all sourcesJune McEnroe Except for gfx-cocoa because I don't have an Objective-C highlighter. Also hypothetically the .h rule could match up headers with .3 manual pages if I cared to write them. 2019-02-20Add Dirk Gently's Holistic Detective AgencyJune McEnroe 2019-02-20Move /opt/pkg after /usr in PATHJune McEnroe Installing mandoc from pkgsrc also installs a man executable which is horribly broken. Keep using the system man. 2019-02-20Set man_hard_wrap in nvimJune McEnroe Vendoring man.vim until <https://github.com/neovim/neovim/pull/9633> is merged and appears in a release. 2019-02-18Use hi -o anchor in upJune McEnroe 2019-02-18Don't match nested parentheses in Tag for CJune McEnroe Fixes mistaken highlight of: pngWrite(file, (uint8_t []) { 0, 0, 0 }, 3); 2019-02-18Match whitespace between * [] {}June McEnroe 2019-02-18Fix function-like #define regexJune McEnroe A define like #define FOO (1) is not function-like. 2019-02-18Match Tag in RustJune McEnroe 2019-02-18Match sh functions as TagJune McEnroe 2019-02-18Match Sh and Ss as Tag in mdocJune McEnroe 2019-02-18Match statics and typedefs as TagJune McEnroe 2019-02-18Clean up htmlHeaderJune McEnroe 2019-02-18Remove hi line numberingJune McEnroe Tags are much better for referring to specific parts of a file and line numbering is better done by a post-processing tool such as cat -n or producing a two-column HTML <table>. 2019-02-18Add Tag class to hiJune McEnroe 2019-02-17Generate HTML with hi -n -f html -o anchorJune McEnroe Running hi twice to insert stuff between the head and the content is a bit of a hack but oh well. 2019-02-17Add hi -f html -o anchor for line number linksJune McEnroe 2019-02-17Simplify temp trap in upJune McEnroe 2019-02-17Add line numbers to hiJune McEnroe Renames previous -n option to -m to stay consistent with cat -n. Prefixing lines with line numbers affects where the first tab indent ends up relative to the text above it. Not sure if it's worth fixing somehow. 2019-02-17Always split spans after newlinesJune McEnroe Simplifies ANSI and IRC output code, and prepares for line numbered output. 2019-02-15Color format specifiers light cyan in vimJune McEnroe 2019-02-15Highlight Interp as yellowJune McEnroe 2019-02-15Highlight strings in sh command substitutionsJune McEnroe 2019-02-15Add nmap gpJune McEnroe 2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe 2019-02-13Add forgotten "sixth" book of H2G2June McEnroe