]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/modules.cpp
Replace std::deque with std::vector in spanningtree and related modules
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / modules.cpp
index ce9ca955debf1242ff8efd6095768a4723258673..6c91327946d126261abb55f8d4bcf669cdc0f3df 100644 (file)
@@ -2,8 +2,8 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
 #include "inspircd.h"
 #include "xline.h"
 
-#include "m_spanningtree/treesocket.h"
-#include "m_spanningtree/treeserver.h"
-#include "m_spanningtree/utils.h"
+#include "treesocket.h"
+#include "treeserver.h"
+#include "utils.h"
 
 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
 
 
-bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &params)
+bool TreeSocket::Modules(const std::string &prefix, parameterlist &params)
 {
        if (params.empty())
                return true;
 
-       if (!this->Instance->MatchText(this->Instance->Config->ServerName, params[0]))
+       if (!InspIRCd::Match(this->ServerInstance->Config->ServerName, params[0]))
        {
                /* Pass it on, not for us */
                Utils->DoOneToOne(prefix, "MODULES", params, params[0]);
@@ -34,49 +34,41 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        }
 
        char strbuf[MAXBUF];
-       std::deque<std::string> par;
+       parameterlist par;
        par.push_back(prefix);
        par.push_back("");
 
-       User* source = this->Instance->FindNick(prefix);
+       User* source = this->ServerInstance->FindNick(prefix);
        if (!source)
                return true;
 
-       std::vector<std::string> module_names = Instance->Modules->GetAllModuleNames(0);
+       std::vector<std::string> module_names = ServerInstance->Modules->GetAllModuleNames(0);
 
        for (unsigned int i = 0; i < module_names.size(); i++)
        {
-               Module* m = Instance->Modules->Find(module_names[i]);
+               Module* m = ServerInstance->Modules->Find(module_names[i]);
                Version V = m->GetVersion();
-               char modulename[MAXBUF];
-               char flagstate[MAXBUF];
-               *flagstate = 0;
-               if (V.Flags & VF_STATIC)
-                       strlcat(flagstate,", static",MAXBUF);
-               if (V.Flags & VF_VENDOR)
-                       strlcat(flagstate,", vendor",MAXBUF);
-               if (V.Flags & VF_COMMON)
-                       strlcat(flagstate,", common",MAXBUF);
-               if (V.Flags & VF_SERVICEPROVIDER)
-                       strlcat(flagstate,", service provider",MAXBUF);
-               if (!flagstate[0])
-                       strcpy(flagstate,"  <no flags>");
-               strlcpy(modulename,module_names[i].c_str(),256);
-               if (*source->oper)
+
+               if (IS_OPER(source))
                {
-                       snprintf(strbuf, MAXBUF, "::%s 900 %s :0x%08lx %d.%d.%d.%d %s (%s)",Instance->Config->ServerName,source->nick,(unsigned long)m,
-                                       V.Major,V.Minor,V.Revision,V.Build,ServerConfig::CleanFilename(modulename),flagstate+2);
+                        std::string flags("Svsc");
+                       int pos = 0;
+                       for (int mult = 1; mult <= VF_SERVICEPROVIDER; mult *= 2, ++pos)
+                               if (!(V.Flags & mult))
+                                       flags[pos] = '-';
+
+                       snprintf(strbuf, MAXBUF, "::%s 702 %s :0x%08lx %s %s :%s", ServerInstance->Config->ServerName, source->nick.c_str(),(unsigned long)m, module_names[i].c_str(), flags.c_str(), V.version.c_str());
                }
                else
                {
-                       snprintf(strbuf, MAXBUF, "::%s 900 %s :%s",Instance->Config->ServerName,source->nick,ServerConfig::CleanFilename(modulename));
+                       snprintf(strbuf, MAXBUF, "::%s 702 %s :%s", ServerInstance->Config->ServerName, source->nick.c_str(), module_names[i].c_str());
                }
                par[1] = strbuf;
-               Utils->DoOneToOne(Instance->Config->GetSID(), "PUSH", par, source->server);
+               Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", par, source->server);
        }
-       snprintf(strbuf, MAXBUF, "::%s 901 %s :End of MODULES list", Instance->Config->ServerName, source->nick);
+       snprintf(strbuf, MAXBUF, "::%s 703 %s :End of MODULES list", ServerInstance->Config->ServerName, source->nick.c_str());
        par[1] = strbuf;
-       Utils->DoOneToOne(Instance->Config->GetSID(), "PUSH", par, source->server);
+       Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", par, source->server);
        return true;
 }