return;
}
ident = argv[0];
- reply(getTextBot(), user, "NS_COMMAND_BINDING", cbind->cmd, cbind->func->name, (cbind->parameters ? cbind->parameters : ""));
+ char parameters[MAXLEN];
+ if(cbind->paramcount) {
+ int i, parampos = 0;
+ for(i = 0; i < cbind->paramcount; i++) {
+ parampos += sprintf(parameters + parampos, (i ? " %s" : "%s"), cbind->parameters[i]);
+ }
+ } else
+ parameters[0] = '\0';
+ reply(getTextBot(), user, "NS_COMMAND_BINDING", cbind->cmd, cbind->func->name, parameters);
if(chan)
reply(getTextBot(), user, "NS_COMMAND_ACCESS", neonserv_cmd_command_chanaccess(cbind, chan), neonserv_cmd_command_operaccess(cbind));
printf_mysql_query("SELECT `user_lang` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth));
chan = chan2;
}
}
- if(cbind->parameters) {
+ if(cbind->paramcount) {
//userdefined parameters...
char *uargs[MAXNUMPARAMS];
int uargc = 0;
- char *a,*b = cbind->parameters;
+ char *b;
+ int i;
int allargs, argi;
- do {
- a = strstr(b, " ");
- if(a) *a = '\0';
+ for(i = 0; i < cbind->paramcount; i++) {
+ b = cbind->parameters[i];
if(b[0] == '%') {
b++;
if(b[strlen(b)-1] == '-') {
} else {
uargs[uargc++] = b;
}
- if(a) {
- *a = ' ';
- b = a+1;
- }
- } while(a);
+ }
argv = uargs;
argc = uargc;
}
cbind->botid = botid;
cbind->cmd = strdup(cmd);
cbind->func = func;
- cbind->parameters = NULL;
+ cbind->paramcount = 0;
cbind->global_access = 0;
cbind->channel_access = NULL;
cbind->flags = 0;
cbind->cmd = strdup(cmd);
cbind->func = cmdfunc;
cbind->next = cmd_binds[bind_index];
- cbind->parameters = NULL;
+ cbind->paramcount = 0;
cbind->global_access = 0;
cbind->channel_access = NULL;
cbind->flags = 0;
else
cmd_binds[bind_index] = cbind->next;
free(cbind->cmd);
- if(cbind->parameters)
- free(cbind->parameters);
+ if(cbind->paramcount) {
+ int i;
+ for(i = 0; i < cbind->paramcount; i++)
+ free(cbind->parameters[i]);
+ }
free(cbind);
return 1;
} else
for(cbind = cmd_binds[i]; cbind; cbind = next) {
next = cbind->next;
free(cbind->cmd);
- if(cbind->parameters)
- free(cbind->parameters);
+ if(cbind->paramcount) {
+ int j;
+ for(j = 0; j < cbind->paramcount; j++)
+ free(cbind->parameters[j]);
+ }
if(cbind->channel_access)
free(cbind->channel_access);
free(cbind);
struct cmd_binding *cbind;
for(cbind = cmd_binds[bind_index]; cbind; cbind = cbind->next) {
if(cbind->botid == botid && strcmp(cbind->cmd, cmd) == 0) {
- if(cbind->parameters)
- free(cbind->parameters);
- cbind->parameters = strdup(parameters);
+ if(cbind->paramcount) {
+ int i;
+ for(i = 0; i < cbind->paramcount; i++)
+ free(cbind->parameters[i]);
+ cbind->paramcount = 0;
+ }
+ char *a, *b = parameters;
+ do {
+ a = strstr(b, " ");
+ if(a) *a = '\0';
+ cbind->parameters[cbind->paramcount++] = strdup(b);
+ if(a) b = a+1;
+ } while(a);
return;
}
}