summary refs log tree commit diff
path: root/client.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-11-11 17:46:24 -0500
committerJune McEnroe <june@causal.agency>2019-11-11 17:46:24 -0500
commit2eee1e6dcac51afd9c6dd4ccb8b3aacef68627c6 (patch)
tree34479a861415147c32cdd5548f7165463d8253aa /client.c
parentFilter userhost-in-names (diff)
downloadpounce-2eee1e6dcac51afd9c6dd4ccb8b3aacef68627c6.tar.gz
pounce-2eee1e6dcac51afd9c6dd4ccb8b3aacef68627c6.zip
Skip initial NAMES parameters
Channel names can contain '!' so splitting the whole message on it won't
work.

I hate this code though.
Diffstat (limited to '')
-rw-r--r--client.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/client.c b/client.c
index dec0041..c93d01a 100644
--- a/client.c
+++ b/client.c
@@ -322,9 +322,16 @@ static const char *filterUserhostInNames(const char *line) {
 	if (wordcmp(line, 1, "353")) return line;
 	static char buf[512];
 	if (strlen(line) >= sizeof(buf)) return NULL;
-	char *ptr = buf;
+	size_t len = 0;
+	for (int i = 0; i < 5; ++i) {
+		len += strcspn(&line[len], " ");
+		if (line[len]) len++;
+	}
+	memcpy(buf, line, len);
+	line += len;
+	char *ptr = &buf[len];
 	while (*line) {
-		size_t len = strcspn(line, "!");
+		len = strcspn(line, "!");
 		memcpy(ptr, line, len);
 		ptr += len;
 		line += len;