aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormcpcpc <michaelczigler@icloud.com>2020-08-06 19:50:10 -0400
committermcpcpc <michaelczigler@icloud.com>2020-08-06 19:50:10 -0400
commit4ed5ca8b6c9e8327846c18cfdd95f5cb32b49bce (patch)
treed1eb3e39ba5d23a2e8cde3835e636e09f2f5f2a4
parentfix ':m' error message (diff)
downloadkirc-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--.gitignore3
-rw-r--r--kirc.c13
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
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 <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;
}
}