- if(!strncmp(msg + 1, "j ", 2) && (msg[3] == '#'))
- snprintf(bufout, sizeof bufout, "JOIN %s\r\n", msg + 3);
- else if(!strncmp(msg + 1, "l ", 2))
- snprintf(bufout, sizeof bufout, "PART %s :sic - 250 LOC are too much!\r\n", msg + 3);
- else if(!strncmp(msg + 1, "m ", 2)) {
- if((p = strchr(msg + 3, ' ')))
- *(p++) = 0;
- privmsg(msg + 3, p);
- return;
- }
- else if(!strncmp(msg + 1, "s ", 2)) {
- strncpy(channel, msg + 3, sizeof channel);
- return;
- }
- else if(!strncmp(msg + 1, "t ", 2)) {
- if((p = strchr(msg + 3, ' ')))
- *(p++) = 0;
- snprintf(bufout, sizeof bufout, "TOPIC %s :%s\r\n", msg + 3, p);
+ c = *++s;
+ if(c != '\0' && isspace((unsigned char)s[1])) {
+ p = s + 2;
+ switch(c) {
+ case 'j':
+ sout("JOIN %s", p);
+ if(channel[0] == '\0')
+ strlcpy(channel, p, sizeof channel);
+ return;
+ case 'l':
+ s = eat(p, isspace, 1);
+ p = eat(s, isspace, 0);
+ if(!*s)
+ s = channel;
+ if(*p)
+ *p++ = '\0';
+ if(!*p)
+ p = DEFAULT_PARTING_MESSAGE;
+ sout("PART %s :%s", s, p);
+ return;
+ case 'm':
+ s = eat(p, isspace, 1);
+ p = eat(s, isspace, 0);
+ if(*p)
+ *p++ = '\0';
+ privmsg(s, p);
+ return;
+ case 's':
+ strlcpy(channel, p, sizeof channel);
+ return;
+ }