]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/command_parse.cpp
Set defaults for an enum
[user/henk/code/inspircd.git] / src / command_parse.cpp
index 52c58ef999aba743e78506101cd314538479aea6..84850a880fb564d7e95895903f0e2c198593d71d 100644 (file)
@@ -144,9 +144,9 @@ int CommandParser::LoopCall(userrec* user, command_t* CommandObj, const char** p
        {
                if (dupes.find(item.c_str()) == dupes.end())
                {
-                       const char* new_parameters[127];
+                       const char* new_parameters[MAXPARAMETERS];
 
-                       for (int t = 0; (t < pcnt) && (t < 127); t++)
+                       for (int t = 0; (t < pcnt) && (t < MAXPARAMETERS); t++)
                                new_parameters[t] = parameters[t];
 
                        std::string extrastuff = items2.GetToken();
@@ -185,9 +185,9 @@ int CommandParser::LoopCall(userrec* user, command_t* CommandObj, const char** p
        {
                if (dupes.find(item.c_str()) == dupes.end())
                {
-                       const char* new_parameters[127];
+                       const char* new_parameters[MAXPARAMETERS];
 
-                       for (int t = 0; (t < pcnt) && (t < 127); t++)
+                       for (int t = 0; (t < pcnt) && (t < MAXPARAMETERS); t++)
                                new_parameters[t] = parameters[t];
 
                        new_parameters[splithere] = item.c_str();
@@ -218,7 +218,7 @@ bool CommandParser::IsValidCommand(const std::string &commandname, int pcnt, use
        {
                if ((pcnt>=n->second->min_params) && (n->second->source != "<core>"))
                {
-                       if ((!n->second->flags_needed) || (user->modes[n->second->flags_needed-65]))
+                       if ((!n->second->flags_needed) || (user->IsModeSet(n->second->flags_needed)))
                        {
                                if (n->second->flags_needed)
                                {
@@ -250,7 +250,7 @@ CmdResult CommandParser::CallHandler(const std::string &commandname,const char**
        {
                if (pcnt >= n->second->min_params)
                {
-                       if ((!n->second->flags_needed) || (user->modes[n->second->flags_needed-65]))
+                       if ((!n->second->flags_needed) || (user->IsModeSet(n->second->flags_needed)))
                        {
                                if (n->second->flags_needed)
                                {
@@ -271,7 +271,7 @@ CmdResult CommandParser::CallHandler(const std::string &commandname,const char**
 
 void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
 {
-       const char *command_p[127];
+       const char *command_p[MAXPARAMETERS];
        int items = 0;
        irc::tokenstream tokens(cmd);
        std::string command;
@@ -285,7 +285,7 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
        if (*command.c_str() == ':')
                tokens.GetToken(command);
 
-       while (tokens.GetToken(para[items]) && (items < 127))
+       while (tokens.GetToken(para[items]) && (items < MAXPARAMETERS))
        {
                command_p[items] = para[items].c_str();
                items++;
@@ -329,7 +329,6 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
                        if (items < cm->second->min_params)
                        {
                                user->WriteServ("461 %s %s :Not enough parameters.", user->nick, command.c_str());
-                               /* If syntax is given, display this as the 461 reply */
                                if ((ServerInstance->Config->SyntaxHints) && (user->registered == REG_ALL) && (cm->second->syntax.length()))
                                        user->WriteServ("304 %s :SYNTAX %s %s", user->nick, cm->second->command.c_str(), cm->second->syntax.c_str());
                                return;
@@ -346,9 +345,8 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
                                        return;
 
                                /*
-                                * WARNING: nothing may come after the
-                                * command handler call, as the handler
-                                * may free the user structure!
+                                * WARNING: nothing should come after this, as the user may be on a cull list to
+                                * be nuked next loop iteration. be sensible.
                                 */
                                CmdResult result = cm->second->Handle(command_p,items,user);