]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/mode.cpp
And make it work here
[user/henk/code/inspircd.git] / src / mode.cpp
index 9f1b37044239933d38d9a62bbfa02883dd1cd63f..4c1a229902a01508d0d32a8e791b8e411087c842 100644 (file)
 
 using namespace std;
 
-#include "inspircd_config.h"
 #include "inspircd.h"
-#include "configreader.h"
-#include <unistd.h>
-#include "hash_map.h"
-#include "connection.h"
 #include "users.h"
 #include "modules.h"
 #include "inspstring.h"
-
-#include "commands.h"
 #include "mode.h"
 
 /* +s (secret) */
@@ -53,7 +46,6 @@ using namespace std;
 #include "modes/cmode_h.h"
 /* +v (channel voice) */
 #include "modes/cmode_v.h"
-
 /* +s (server notices) */
 #include "modes/umode_s.h"
 /* +w (see wallops) */
@@ -259,7 +251,8 @@ void ModeParser::DisplayCurrentModes(userrec *user, userrec* targetuser, chanrec
        {
                /* Display user's current mode string */
                user->WriteServ("221 %s :+%s",targetuser->nick,targetuser->FormatModes());
-               user->WriteServ("008 %s :+%s", targetuser->nick, targetuser->FormatNoticeMasks());
+               if (*targetuser->oper)
+                       user->WriteServ("008 %s +%s :Server notice mask", targetuser->nick, targetuser->FormatNoticeMasks());
                return;
        }
 
@@ -417,7 +410,7 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool
                                                                        parameter = parameters[parameter_counter++];
 
                                                                        /* Yerk, invalid! */
-                                                                       if ((parameter.rfind(':') != std::string::npos) || (parameter.rfind(' ') != std::string::npos))
+                                                                       if ((parameter.rfind(':') == 0) || (parameter.rfind(' ') != std::string::npos))
                                                                                parameter = "";
                                                                }
                                                                else
@@ -432,8 +425,9 @@ void ModeParser::Process(const char** parameters, int pcnt, userrec *user, bool
                                                         */
                                                        if ((IS_LOCAL(user)) && (modehandlers[handler_id]->NeedsOper()) && (!*user->oper))
                                                        {
-                                                               user->WriteServ("481 %s :Permission Denied- Only operators may set %s mode %c", user->nick,
-                                                                               type == MODETYPE_CHANNEL ? "channel" : "user", modehandlers[handler_id]->GetModeChar());
+                                                               user->WriteServ("481 %s :Permission Denied- Only IRC operators may %sset %s mode %c", user->nick,
+                                                                               adding ? "" : "un", type == MODETYPE_CHANNEL ? "channel" : "user",
+                                                                               modehandlers[handler_id]->GetModeChar());
                                                                continue;
                                                        }