diff options
author | June McEnroe <june@causal.agency> | 2019-11-11 17:46:24 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-11-11 17:46:24 -0500 |
commit | 2eee1e6dcac51afd9c6dd4ccb8b3aacef68627c6 (patch) | |
tree | 34479a861415147c32cdd5548f7165463d8253aa /client.c | |
parent | Filter userhost-in-names (diff) | |
download | pounce-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.c | 11 |
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; |