From 4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce Mon Sep 17 00:00:00 2001 From: mcpcpc Date: Thu, 6 Aug 2020 19:50:10 -0400 Subject: fix multi-word messages --- .gitignore | 3 +++ kirc.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8c0d04 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +kirc +*.a +*.o diff --git a/kirc.c b/kirc.c index 55b31ee..d5285bc 100644 --- a/kirc.c +++ b/kirc.c @@ -1,4 +1,5 @@ #define _POSIX_C_SOURCE 200809L +#include #include #include #include @@ -211,7 +212,6 @@ main(int argc, char **argv) { char usrin[CMAX]; char cmd = '\n'; - char *cmd_val = malloc(sizeof(char) * (CMAX - 3)); while (waitpid(pid, NULL, WNOHANG) == 0) { @@ -222,9 +222,10 @@ main(int argc, char **argv) fgets(usrin, CMAX, stdin); - if (usrin[0] == ':') + if (usrin[0] == ':' && usrin[1]) { - sscanf(usrin, ":%c %s", &cmd, cmd_val); + char *cmd_val = &usrin[2]; + cmd = usrin[1]; switch (cmd) { @@ -232,7 +233,11 @@ main(int argc, char **argv) snprintf(usrin, CMAX, "quit"); break; case 'm': - snprintf(usrin, CMAX, "privmsg #%s %s", chan, cmd_val); + while (isspace(*cmd_val)) + cmd_val++; + cmd_val = strdup(cmd_val); + snprintf(usrin, CMAX, "privmsg #%s :%s", chan, cmd_val); + free(cmd_val); break; } } -- cgit v1.2.3