fixed last commit
authorpk910 <philipp@zoelle1.de>
Thu, 1 Sep 2011 12:32:06 +0000 (14:32 +0200)
committerpk910 <philipp@zoelle1.de>
Thu, 1 Sep 2011 12:51:59 +0000 (14:51 +0200)
bot_NeonServ.c
cmd_neonserv_set.c

index dff7184e4cc90b6cea25e4eb65c0dedbe5267e5f..181eaa4ac5e52986cfad001d1bbd42efed5a7412 100644 (file)
@@ -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"
index 2ab296fddd77d07e12ee1e36c69e720eb645f3a2..0c93b559a11f423da07c4374ec29249e8acd42c8 100644 (file)
@@ -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;