Skip to content

Commit 4ed5ca8

Browse files
committed
fix multi-word messages
1 parent 7bcdf07 commit 4ed5ca8

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kirc
2+
*.a
3+
*.o

kirc.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#define _POSIX_C_SOURCE 200809L
2+
#include <ctype.h>
23
#include <stdarg.h>
34
#include <netdb.h>
45
#include <stdio.h>
@@ -211,7 +212,6 @@ main(int argc, char **argv)
211212
{
212213
char usrin[CMAX];
213214
char cmd = '\n';
214-
char *cmd_val = malloc(sizeof(char) * (CMAX - 3));
215215

216216
while (waitpid(pid, NULL, WNOHANG) == 0)
217217
{
@@ -222,17 +222,22 @@ main(int argc, char **argv)
222222

223223
fgets(usrin, CMAX, stdin);
224224

225-
if (usrin[0] == ':')
225+
if (usrin[0] == ':' && usrin[1])
226226
{
227-
sscanf(usrin, ":%c %s", &cmd, cmd_val);
227+
char *cmd_val = &usrin[2];
228+
cmd = usrin[1];
228229

229230
switch (cmd)
230231
{
231232
case 'q':
232233
snprintf(usrin, CMAX, "quit");
233234
break;
234235
case 'm':
235-
snprintf(usrin, CMAX, "privmsg #%s %s", chan, cmd_val);
236+
while (isspace(*cmd_val))
237+
cmd_val++;
238+
cmd_val = strdup(cmd_val);
239+
snprintf(usrin, CMAX, "privmsg #%s :%s", chan, cmd_val);
240+
free(cmd_val);
236241
break;
237242
}
238243
}

0 commit comments

Comments
 (0)