summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorJune McEnroe2022-05-08 17:49:20 -0400
committerJune McEnroe2022-05-08 17:49:20 -0400
commitfc518e301f817f1ff2092eb2bf80451508085b7e (patch)
tree1dfc9bc246bcad58421b5e7a06bc15f76c0cdc0c /handle.c
parent7ee327ccb6b290dd189346ef91ddf1a97818833e (diff)
Route unknown channel replies to channels
Also prefix with the numeric. I don't really want to show numerics
to the user, but I'm not sure these really make sense without.
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/handle.c b/handle.c
index df21cbf..8a6a9c6 100644
--- a/handle.c
+++ b/handle.c
@@ -128,12 +128,21 @@ static void handleErrorGeneric(struct Message *msg) {
 }
 
 static void handleReplyGeneric(struct Message *msg) {
+	uint first = 1;
+	uint id = Network;
+	if (msg->params[1] && strchr(network.chanTypes, msg->params[1][0])) {
+		id = idFor(msg->params[1]);
+		first++;
+	}
 	char buf[1024];
 	char *ptr = buf, *end = &buf[sizeof(buf)];
-	for (uint i = 1; i < ParamCap && msg->params[i]; ++i) {
-		ptr = seprintf(ptr, end, "%s%s", (i > 1 ? " " : ""), msg->params[i]);
+	ptr = seprintf(ptr, end, "\3%02d%s\3\t", Gray, msg->cmd);
+	for (uint i = first; i < ParamCap && msg->params[i]; ++i) {
+		ptr = seprintf(
+			ptr, end, "%s%s", (i > first ? " " : ""), msg->params[i]
+		);
 	}
-	if (ptr != buf) uiWrite(Network, Ice, tagTime(msg), buf);
+	uiWrite(id, Ice, tagTime(msg), buf);
 }
 
 static void handleErrorNicknameInUse(struct Message *msg) {