aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Czigler <37268479+mcpcpc@users.noreply.github.com>2020-09-01 10:02:12 -0400
committerGitHub <noreply@github.com>2020-09-01 10:02:12 -0400
commit356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc (patch)
treed3c7c5cb498090bc987eb5b3e9a4b05bdb999a9f
parentCreate codeql-analysis.yml (diff)
parenteliminate static char arrays in parser function (diff)
downloadkirc-356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc.tar.gz
kirc-356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc.tar.bz2
kirc-356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc.tar.xz
kirc-356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc.tar.zst
kirc-356fb32d0a1f3292b75a8caa8a8ec7f6e34002fc.zip
Merge pull request #6 from mcpcpc/parser_strtok_only
eliminate static char arrays in parser function
Diffstat (limited to '')
-rw-r--r--kirc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/kirc.c b/kirc.c
index 29a9b25..52b1ea2 100644
--- a/kirc.c
+++ b/kirc.c
@@ -144,25 +144,24 @@ printw(const char *format, ...) {
static void
parser(char *in) {
- int len;
- char ltr[200], cha[IRC_CHAN_MAX] = {0}, nic[200] = {0}, hos[200], \
- usr[200] = {0}, cmd[200] = {0}, msg[IRC_MSG_MAX] = {0}, pre[200] = {0};
-
if (verb) printf(">> %s\n", in);
if (!strncmp(in, "PING", 4)) {
in[1] = 'O';
raw("%s\r\n", in);
} else if (in[0] == ':') {
- sscanf(in, ":%[^ ] %[^:]:%[^\r]", pre, cmd, msg);
- sscanf(pre, "%[^!]!%[^@]@%s", nic, usr, hos);
- sscanf(cmd, "%[^#& ]%s", ltr, cha);
+ char *pre = strtok(in, " ") + 1; /* prefix */
+ char *cmd = strtok(NULL, ":"); /* command */
+ char *msg = strtok(NULL, "\r"); /* message */
+ char *nic = strtok(pre, "!"); //, *usr = strtok(NULL, "@"), *hos = pre;
+ char *ltr = strtok(cmd, "#& "); //, *cha = cmd;
if (!strncmp(ltr, "001", 3)) raw("JOIN #%s\r\n", chan);
if (!strncmp(ltr, "QUIT", 4)) {
printw("%*.*s \x1b[34;1m%s\x1b[0m\n", gutl, gutl, "<--", nic);
} else if (!strncmp(ltr, "JOIN", 4)) {
printw("%*.*s \x1b[32;1m%s\x1b[0m\n", gutl, gutl, "-->", nic);
} else {
- len = strlen(nic);
+ int len = 0;
+ while (nic[len] != '\0') len++;
printw("%*s\x1b[33;1m%-.*s\x1b[0m %s\n", \
gutl-(len <= gutl ? len : gutl), "", gutl, nic, msg);
}