Skip to content

Commit 599d926

Browse files
committed
eliminate static char arrays in parser function
change int len to size_t len Update kirc.c
1 parent 85e2085 commit 599d926

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

kirc.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,25 +144,24 @@ printw(const char *format, ...) {
144144
static void
145145
parser(char *in) {
146146

147-
int len;
148-
char ltr[200], cha[IRC_CHAN_MAX] = {0}, nic[200] = {0}, hos[200], \
149-
usr[200] = {0}, cmd[200] = {0}, msg[IRC_MSG_MAX] = {0}, pre[200] = {0};
150-
151147
if (verb) printf(">> %s\n", in);
152148
if (!strncmp(in, "PING", 4)) {
153149
in[1] = 'O';
154150
raw("%s\r\n", in);
155151
} else if (in[0] == ':') {
156-
sscanf(in, ":%[^ ] %[^:]:%[^\r]", pre, cmd, msg);
157-
sscanf(pre, "%[^!]!%[^@]@%s", nic, usr, hos);
158-
sscanf(cmd, "%[^#& ]%s", ltr, cha);
152+
char *pre = strtok(in, " ") + 1; /* prefix */
153+
char *cmd = strtok(NULL, ":"); /* command */
154+
char *msg = strtok(NULL, "\r"); /* message */
155+
char *nic = strtok(pre, "!"); //, *usr = strtok(NULL, "@"), *hos = pre;
156+
char *ltr = strtok(cmd, "#& "); //, *cha = cmd;
159157
if (!strncmp(ltr, "001", 3)) raw("JOIN #%s\r\n", chan);
160158
if (!strncmp(ltr, "QUIT", 4)) {
161159
printw("%*.*s \x1b[34;1m%s\x1b[0m\n", gutl, gutl, "<--", nic);
162160
} else if (!strncmp(ltr, "JOIN", 4)) {
163161
printw("%*.*s \x1b[32;1m%s\x1b[0m\n", gutl, gutl, "-->", nic);
164162
} else {
165-
len = strlen(nic);
163+
int len = 0;
164+
while (nic[len] != '\0') len++;
166165
printw("%*s\x1b[33;1m%-.*s\x1b[0m %s\n", \
167166
gutl-(len <= gutl ? len : gutl), "", gutl, nic, msg);
168167
}

0 commit comments

Comments
 (0)