-typedef char* neonserv_cmd_set_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
-static char* neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
-static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
-static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
-static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
-static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument);
+typedef char* neonserv_cmd_set_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument);
+static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, int setting, char *argument);
+static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument);
+static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument);
+static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument);
+static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument);
#define NS_VALID_FUNCTION 0x01
#define NS_VALID_STRING 0x02
return;
}
int seed = 0;
+ char *tmp;
static char defaultskey[16];
for(tmp = user->auth; *tmp; tmp++)
seed = (seed * 0xEECE66DL ^ ((*tmp << 24) | (*tmp << 16) | (*tmp << 8) | *tmp));
//find the correct command
i = 0;
j = 0;
+ char *args = (argc > 1 ? merge_argv(argv, 1, argc) : NULL);
while(channel_settings[i].setting) {
if(!stricmp(channel_settings[i].setting, argv[0])) {
//setting found
- char *args = (argc > 1 ? merge_argv(argv, 1, argc) : NULL);
if(channel_settings[i].valid & NS_VALID_FUNCTION) {
neonserv_cmd_set_function *func = channel_settings[i].parameter;
func(client, user, chan, channel_settings[i].setting, args);
} else {
- neonserv_cmd_set_setting(client, user, chan, channel_settings[i].setting, args);
+ neonserv_cmd_set_setting(client, user, chan, i, args);
}
j = 1;
break;
}
if(j == 0) {
//unknown setting
- reply(getTextBot(), "NS_SET_UNKNOWN_SETTING", argv[0]);
+ reply(getTextBot(), user, "NS_SET_UNKNOWN_SETTING", argv[0]);
}
} else {
check_mysql();
}
}
-static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, int setting, char *argument) {
+static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, int setting, char *args) {
char *value;
char nameBuf[64];
//get current value
row = mysql_fetch_row(res);
}
value = row[0];
- if(argument) {
+ if(args) {
//change the channel setting
//check the new argument
int valid = channel_settings[setting].valid;
if(valid & NS_VALID_STRING) {
- if(!strcmp(argument, "*")) {
- argument = "";
+ if(!strcmp(args, "*")) {
+ args = "";
}
}
if(valid & NS_VALID_ACCESS) {
- int caccess = atoi(argument);
+ int caccess = atoi(args);
int max = ((valid & NS_VALID_NO501) ? 500 : 501);
if(caccess < 0 || caccess > max) {
reply(getTextBot(), user, "NS_INVALID_ACCESS", caccess);
}
if(valid & NS_VALID_OPTIONS) {
int options = atoi((char *) channel_settings[setting].parameter);
- int coption = atoi(argument);
+ int coption = atoi(args);
if(coption < 0 || coption >= options) {
- reply(getTextBot(), user, "NS_SET_INVALID_OPTION", argument);
+ reply(getTextBot(), user, "NS_SET_INVALID_OPTION", args);
int i;
int nameBufPos = 0;
if(valid & NS_HAS_OPT) {
for(i = 0; i < options; i++) {
- sprintf(nameBuf, "NS_SET_OPTION_%s_%s", channel_settings[setting].setting, i);
+ sprintf(nameBuf, "NS_SET_OPTION_%s_%d", channel_settings[setting].setting, i);
reply(getTextBot(), user, "\002%d\002 - %s", i, get_language_string(user, nameBuf));
}
} else {
}
}
if(valid & NS_VALID_NUMERIC) {
- sprintf(nameBuf, "%d", atoi(argument));
- argument = nameBuf;
+ sprintf(nameBuf, "%d", atoi(args));
+ args = nameBuf;
}
if(valid & NS_VALID_BOOLEAN) {
- if(!strcmp(argument, "0") || !strcmp(argument, "off") || !strcmp(argument, get_language_string(user, "NS_SET_OFF"))) {
- argument = "0";
- } else if(!strcmp(argument, "0") || !strcmp(argument, "off") || !strcmp(argument, get_language_string(user, "NS_SET_OFF"))) {
- argument = "1";
+ if(!strcmp(args, "0") || !strcmp(args, "off") || !strcmp(args, get_language_string(user, "NS_SET_OFF"))) {
+ args = "0";
+ } else if(!strcmp(args, "0") || !strcmp(args, "off") || !strcmp(args, get_language_string(user, "NS_SET_OFF"))) {
+ args = "1";
} else {
- reply(getTextBot(), user, "NS_SET_INVALID_BOOLEAN", argument);
+ reply(getTextBot(), user, "NS_SET_INVALID_BOOLEAN", args);
return;
}
}
//valid - set it
- value = argument;
+ value = args;
printf_mysql_query("UPDATE `channels` SET `%s` = '%s' WHERE `channel_id` = '%d'", channel_settings[setting].chanfield, escape_string(value), chan->channel_id);
}
reply(getTextBot(), user, "\002%s\002 %s", channel_settings[setting].setting, value);
if(channel_settings[setting].valid & NS_HAS_HELP) {
- sprintf(nameBuf, "NS_SET_HELP_%s", channel_settings[i].setting);
- reply(getTextBot(), user, " %s", get_language_string(user, nameBuf);
+ sprintf(nameBuf, "NS_SET_HELP_%s", channel_settings[setting].setting);
+ reply(getTextBot(), user, " %s", get_language_string(user, nameBuf));
}
}
-static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument) {
+static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument) {
char *trigger;
//get current trigger
MYSQL_RES *res;
return trigger;
}
-static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument) {
+static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument) {
char *value;
//get current value
MYSQL_RES *res;
return value;
}
-static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument) {
+static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument) {
char *value;
char tmp[64];
//get current value
return value;
}
-static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *setting, char *argument) {
+static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, const char *setting, char *argument) {
char *value;
//get current value
MYSQL_RES *res;