From 2b68b0d17ff6306b0a92e0be41bcbee3ae2529b9 Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 1 Sep 2011 14:32:06 +0200 Subject: [PATCH] fixed last commit --- bot_NeonServ.c | 4 +-- cmd_neonserv_set.c | 63 +++++++++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/bot_NeonServ.c b/bot_NeonServ.c index dff7184..181eaa4 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -110,7 +110,7 @@ static const struct default_language_entry msgtab[] = { {"NS_SET_UNKNOWN_SETTING", "\002%s\002 is an unknown channel setting."}, {"NS_SET_CANNOT_SET", "That setting is above your current level, so you cannot change it."}, {"NS_SET_BADLEVEL", "You cannot change any setting to above your level."}, - {"NS_SET_INVALID_OPTION", "\002%d\002 is not a valid choice. Choose one:"}, + {"NS_SET_INVALID_OPTION", "\002%s\002 is not a valid choice. Choose one:"}, {"NS_SET_INVALID_BOOLEAN", "\002%s\002 is an invalid binary value."}, {"NS_SET_DEFAULTS_OWNER", "You must have access 500 in %s to reset it to the default options."}, {"NS_SET_DEFAULTS_CODE", "To reset %s's settings to the defaults, you must use 'set defaults %s'."}, @@ -166,7 +166,7 @@ INCLUDE ALL CMD's HERE //#include "cmd_neonserv_info.c" //#include "cmd_neonserv_netinfo.c" //#include "cmd_neonserv_peek.c" -#include "cmd_neonserv_set.c" +#include "cmd_neonserv_set.c" /* TODO: parse, check and set modelock */ //#include "cmd_neonserv_events.c" //#include "cmd_neonserv_resync.c" //#include "cmd_neonserv_help.c" diff --git a/cmd_neonserv_set.c b/cmd_neonserv_set.c index 2ab296f..0c93b55 100644 --- a/cmd_neonserv_set.c +++ b/cmd_neonserv_set.c @@ -1,10 +1,10 @@ -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 @@ -72,6 +72,7 @@ static CMD_BIND(neonserv_cmd_set) { 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)); @@ -100,15 +101,15 @@ static CMD_BIND(neonserv_cmd_set) { //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; @@ -117,7 +118,7 @@ static CMD_BIND(neonserv_cmd_set) { } 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(); @@ -189,7 +190,7 @@ static CMD_BIND(neonserv_cmd_set) { } } -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 @@ -205,17 +206,17 @@ static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNod 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); @@ -234,14 +235,14 @@ static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNod } 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 { @@ -257,31 +258,31 @@ static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNod } } 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; @@ -309,7 +310,7 @@ static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNo 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; @@ -334,7 +335,7 @@ static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode 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 @@ -366,7 +367,7 @@ static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserN 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; -- 2.20.1