changed Makefile; build all commands as an own file
[NeonServV5.git] / cmd_neonserv_set.c
index 7013d44f429ca888fe376eddc4d16c1173671ed2..2801be765045d28d4f21bb40f560b1f7c911b308 100644 (file)
@@ -1,4 +1,6 @@
 
+#include "cmd_neonserv.h"
+
 typedef char* neonserv_cmd_set_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
 static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, int setting, char *argument);
 static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
@@ -29,28 +31,28 @@ static const struct {
     {"ADVANCEDTOPIC",   "channel_exttopic",     NS_VALID_BOOLEAN | NS_HAS_OPT,      NULL},
     {"GREETING",        "channel_greeting",     NS_VALID_STRING,                    NULL},
     {"USERGREETING",    "channel_usergreeting", NS_VALID_STRING,                    NULL},
-    {"USERINFO",        "channel_userinfo",     NS_VALID_ACCESS,                    NULL},
-    {"WIPEINFO",        "channel_wipeinfo",     NS_VALID_ACCESS,                    NULL},
+    {"USERINFO",        "channel_userinfo",     NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"WIPEINFO",        "channel_wipeinfo",     NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
     {"MODES",           "channel_modes",        NS_VALID_FUNCTION,                  neonserv_cmd_set_modes},
     {"INVITEME",        "channel_getinvite",    NS_VALID_ACCESS,                    NULL},
-    {"GIVEOPS",         "channel_getop",        NS_VALID_ACCESS,                    NULL},
-    {"GIVEVOICE",       "channel_getvoice",     NS_VALID_ACCESS,                    NULL},
-    {"ENFOPS",          "channel_canop",        NS_VALID_ACCESS,                    NULL},
-    {"ENFVOICE",        "channel_canvoice",     NS_VALID_ACCESS,                    NULL},
-    {"KICK",            "channel_cankick",      NS_VALID_ACCESS,                    NULL},
-    {"BAN",             "channel_canban",       NS_VALID_ACCESS,                    NULL},
-    {"STATICBAN",       "channel_staticban",    NS_VALID_ACCESS,                    NULL},
+    {"GIVEOPS",         "channel_getop",        NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"GIVEVOICE",       "channel_getvoice",     NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"ENFOPS",          "channel_canop",        NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"ENFVOICE",        "channel_canvoice",     NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"KICK",            "channel_cankick",      NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"BAN",             "channel_canban",       NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"STATICBAN",       "channel_staticban",    NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
     {"PUBCMD",          "channel_pubcmd",       NS_VALID_ACCESS,                    NULL},
     {"ENFMODES",        "channel_enfmodes",     NS_VALID_ACCESS,                    NULL},
     {"ENFTOPIC",        "channel_enftopic",     NS_VALID_ACCESS,                    NULL},
-    {"TOPICSNARF",      "channel_topicsnarf",   NS_VALID_ACCESS,                    NULL},
-    {"CHANGETOPIC",     "channel_changetopic",  NS_VALID_ACCESS,                    NULL},
-    {"SETTERS",         "channel_setters",      NS_VALID_ACCESS | NS_VALID_NO501,   NULL},
-    {"ADDUSER",         "channel_canadd",       NS_VALID_ACCESS,                    NULL},
-    {"DELUSER",         "channel_candel",       NS_VALID_ACCESS,                    NULL},
-    {"CLVL",            "channel_canclvl",      NS_VALID_ACCESS,                    NULL},
-    {"RESYNC",          "channel_canresync",    NS_VALID_ACCESS,                    NULL},
-    {"SUSPEND",         "channel_cansuspend",   NS_VALID_ACCESS,                    NULL},
+    {"TOPICSNARF",      "channel_topicsnarf",   NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"CHANGETOPIC",     "channel_changetopic",  NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"SETTERS",         "channel_setters",      NS_VALID_ACCESS | NS_VALID_NO501 | NS_HAS_HELP, NULL},
+    {"ADDUSER",         "channel_canadd",       NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"DELUSER",         "channel_candel",       NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"CLVL",            "channel_canclvl",      NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"RESYNC",          "channel_canresync",    NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
+    {"SUSPEND",         "channel_cansuspend",   NS_VALID_ACCESS | NS_HAS_HELP,      NULL},
     {"NOTICEUSERS",     "channel_notice",       NS_VALID_ACCESS,                    NULL},
     {"NOTICEREACTION",  "channel_noticereaction", NS_VALID_OPTIONS | NS_HAS_OPT,    "4"},
     {"CTCPUSERS",       "channel_ctcp",         NS_VALID_ACCESS,                    NULL},
@@ -63,7 +65,7 @@ static const struct {
 };
 
 #define MAX_QUERY_LEN 1024
-static CMD_BIND(neonserv_cmd_set) {
+CMD_BIND(neonserv_cmd_set) {
     int i, j;
     if(argc && !strcmp(argv[0], "defaults")) {
         //reset channel settings
@@ -250,7 +252,7 @@ static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNod
             int options = atoi((char *) channel_settings[setting].parameter);
             int coption = atoi(args);
             if(coption < 0 || coption >= options) {
-                reply(getTextBot(), user, "NS_SET_INVALID_OPTION", args);
+                reply(getTextBot(), user, "NS_SET_INVALID_OPTION", coption);
                 int i;
                 int nameBufPos = 0;
                 if(valid & NS_HAS_OPT) {
@@ -376,6 +378,7 @@ static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserN
             putsock(client, "MODE %s +l %d", chan->name, (chan->usercount + atoi(argument)));
         else if(isModeSet(chan->modes, 'l'))
             putsock(client, "MODE %s -l", chan->name);
+        value = argument;
         logEvent(event);
     }
     if(setting) {
@@ -410,6 +413,7 @@ static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserN
         }
         printf_mysql_query("UPDATE `channels` SET `channel_nodelete` = '%s' WHERE `channel_id` = '%d'", escape_string(argument), chan->channel_id);
         event->flags |= CMDFLAG_OPLOG;
+        value = argument;
         logEvent(event);
     }
     if(setting) {