diff options
author | mcpcpc <michaelczigler@icloud.com> | 2020-08-06 19:50:10 -0400 |
---|---|---|
committer | mcpcpc <michaelczigler@icloud.com> | 2020-08-06 19:50:10 -0400 |
commit | 4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce (patch) | |
tree | d1eb3e39ba5d23a2e8cde3835e636e09f2f5f2a4 | |
parent | fix ':m' error message (diff) | |
download | kirc-4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce.tar.gz kirc-4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce.tar.bz2 kirc-4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce.tar.xz kirc-4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce.tar.zst kirc-4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce.zip |
fix multi-word messages
Diffstat (limited to '')
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | kirc.c | 13 |
2 files changed, 12 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b8c0d04 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +kirc +*.a +*.o @@ -1,4 +1,5 @@ #define _POSIX_C_SOURCE 200809L +#include <ctype.h> #include <stdarg.h> #include <netdb.h> #include <stdio.h> @@ -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; } } |