@@ -144,25 +144,24 @@ printw(const char *format, ...) {
144
144
static void
145
145
parser (char * in ) {
146
146
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
-
151
147
if (verb ) printf (">> %s\n" , in );
152
148
if (!strncmp (in , "PING" , 4 )) {
153
149
in [1 ] = 'O' ;
154
150
raw ("%s\r\n" , in );
155
151
} 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;
159
157
if (!strncmp (ltr , "001" , 3 )) raw ("JOIN #%s\r\n" , chan );
160
158
if (!strncmp (ltr , "QUIT" , 4 )) {
161
159
printw ("%*.*s \x1b[34;1m%s\x1b[0m\n" , gutl , gutl , "<--" , nic );
162
160
} else if (!strncmp (ltr , "JOIN" , 4 )) {
163
161
printw ("%*.*s \x1b[32;1m%s\x1b[0m\n" , gutl , gutl , "-->" , nic );
164
162
} else {
165
- len = strlen (nic );
163
+ int len = 0 ;
164
+ while (nic [len ] != '\0' ) len ++ ;
166
165
printw ("%*s\x1b[33;1m%-.*s\x1b[0m %s\n" , \
167
166
gutl - (len <= gutl ? len : gutl ), "" , gutl , nic , msg );
168
167
}
0 commit comments