static void handle_command(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *message) {
if(message[0] == '#') {
char *chanName = message;
- message = strstr(message, ' ');
+ message = strstr(message, " ");
if(!message) return;
*message = '\0';
message++;
struct cmd_binding *cbind;
for(cbind = cmd_binds[bind_index]; cbind; cbind = cbind->next) {
if(cbind->botid == client->botid && strcmp(cbind->cmd, message) == 0) {
- struct cmd_function *cmdfunc = cbind->func;
//parse the arguments...
- char *argv[MAXNUMPARAMS];
+ char *arga[MAXNUMPARAMS];
+ char **argv;
int argc = 0;
- while(*args) {
- //skip leading spaces
- while (*args == ' ')
- *args++ = 0;
- argv[argc++] = args;
- if (argc >= MAXNUMPARAMS)
- break;
- while (*args != ' ' && *args)
- args++;
+ if(args) {
+ while(*args) {
+ //skip leading spaces
+ while (*args == ' ')
+ *args++ = 0;
+ arga[argc++] = args;
+ if (argc >= MAXNUMPARAMS)
+ break;
+ while (*args != ' ' && *args)
+ args++;
+ }
}
- if(argc != 0 && args[0][0] == '#') {
- struct ChanNode *chan2 = getChanByName(args[0]);
+ argv = arga;
+ if(argc != 0 && argv[0][0] == '#') {
+ struct ChanNode *chan2 = getChanByName(argv[0]);
if(chan2) {
argv += 1;
argc -= 1;
chan = chan2;
}
}
- cmdfunc->func(client, user, chan, argv, argc);
+ cbind->func->func(client, user, chan, argv, argc);
return;
}
}
-
- if(!strcmp(message, "users")) {
- struct ChanUser *chanuser;
- putsock(client, "PRIVMSG %s :[BOT JOIN] Users on this Channel:", chan->name);
- for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {
- putsock(client, "PRIVMSG %s : %s!%s@%s [%s] rights: %d", chan->name, chanuser->user->nick, chanuser->user->ident, chanuser->user->host, ((chanuser->user->flags & USERFLAG_ISAUTHED) ? chanuser->user->auth : "*"), chanuser->flags);
- }
- }
- if(!strcmp(message, "modes")) {
- char modeBuf[MAXLEN];
- getModeString(chan, modeBuf);
- putsock(client, "PRIVMSG %s :Modes: %s", chan->name, modeBuf);
- }
}
static void got_chanmsg(struct UserNode *user, struct ChanNode *chan, char *message) {