]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/modules.cpp
Fix various rline bugs, implement /stats R, and fix the issue where you get no error...
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / modules.cpp
index ce9ca955debf1242ff8efd6095768a4723258673..fe6ca8434ec8e38e4207dfd1484f01769acc5c0f 100644 (file)
@@ -26,7 +26,7 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        if (params.empty())
                return true;
 
-       if (!this->Instance->MatchText(this->Instance->Config->ServerName, params[0]))
+       if (!InspIRCd::Match(this->Instance->Config->ServerName, params[0]))
        {
                /* Pass it on, not for us */
                Utils->DoOneToOne(prefix, "MODULES", params, params[0]);
@@ -48,33 +48,25 @@ bool TreeSocket::Modules(const std::string &prefix, std::deque<std::string> &par
        {
                Module* m = Instance->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", Instance->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", Instance->Config->ServerName, source->nick.c_str(), module_names[i].c_str());
                }
                par[1] = strbuf;
                Utils->DoOneToOne(Instance->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", Instance->Config->ServerName, source->nick.c_str());
        par[1] = strbuf;
        Utils->DoOneToOne(Instance->Config->GetSID(), "PUSH", par, source->server);
        return true;