]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_quit.cpp
Move to entirely using insp_sockaddr and insp_inaddr for socket stuff, first step...
[user/henk/code/inspircd.git] / src / cmd_quit.cpp
index 4863d6333b13d5e66df4655611836370e9441fb8..dfa33e91cdf8b5af50abb8c669bf14d2aba8cf3e 100644 (file)
  * ---------------------------------------------------
  */
 
-using namespace std;
-
 #include "inspircd_config.h"
 #include "inspircd.h"
-#include "inspircd_io.h"
-#include <time.h>
+#include "configreader.h"
 #include <string>
-#ifdef GCC3
-#include <ext/hash_map>
-#else
-#include <hash_map>
-#endif
-#include <map>
-#include <sstream>
 #include <vector>
-#include <deque>
 #include "users.h"
 #include "ctables.h"
 #include "globals.h"
@@ -45,28 +34,25 @@ using namespace std;
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "socketengine.h"
-#include "typedefs.h"
-#include "command_parse.h"
-#include "cmd_quit.h"
+#include "commands/cmd_quit.h"
 
 extern ServerConfig* Config;
 extern InspIRCd* ServerInstance;
 extern int MODCOUNT;
-extern std::vector<Module*> modules;
-extern std::vector<ircd_module*> factory;
+extern ModuleList modules;
+extern FactoryList factory;
 extern time_t TIME;
 extern user_hash clientlist;
 extern chan_hash chanlist;
-extern std::vector<userrec*> all_opers;
 extern std::vector<userrec*> local_users;
 extern userrec* fd_ref_table[MAX_DESCRIPTORS];
 
-void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
+void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
 {
        user_hash::iterator iter = clientlist.find(user->nick);
-       char* reason;
+       char reason[MAXBUF];
 
-       if (user->registered == 7)
+       if (user->registered == REG_ALL)
        {
                /* theres more to do here, but for now just close the socket */
                if (pcnt == 1)
@@ -74,10 +60,7 @@ void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
                        if (*parameters[0] == ':')
                                parameters[0]++;
 
-                       reason = parameters[0];
-
-                       if (strlen(reason) > MAXQUIT)
-                               reason[MAXQUIT-1] = 0;
+                       strlcpy(reason, parameters[0],MAXQUIT-1);
 
                        /* We should only prefix the quit for a local user. Remote users have
                         * already been prefixed, where neccessary, by the upstream server.
@@ -126,12 +109,10 @@ void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
                clientlist.erase(iter);
        }
 
-       if (user->registered == 7) {
+       if (user->registered == REG_ALL) {
                purge_empty_chans(user);
        }
        if (user->fd > -1)
                fd_ref_table[user->fd] = NULL;
-       delete user;
+       DELETE(user);
 }
-
-