]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/capab.cpp
Fix a few issues
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / capab.cpp
index 1ca5b982c997851ab84c468ea8a7ba4ddc5034dc..52404aa1d6e71c973dca9642001d5099e21195e0 100644 (file)
 
 std::string TreeSocket::MyModules(int filter)
 {
-       std::vector<std::string> modlist = ServerInstance->Modules->GetAllModuleNames(filter);
+       const ModuleManager::ModuleMap& modlist = ServerInstance->Modules->GetModules();
 
        std::string capabilities;
-       sort(modlist.begin(),modlist.end());
-       for (std::vector<std::string>::const_iterator i = modlist.begin(); i != modlist.end(); ++i)
+       for (ModuleManager::ModuleMap::const_iterator i = modlist.begin(); i != modlist.end(); ++i)
        {
+               Version v = i->second->GetVersion();
+               if (!(v.Flags & filter))
+                       continue;
+
                if (i != modlist.begin())
                        capabilities.push_back(' ');
-               capabilities.append(*i);
-               Module* m = ServerInstance->Modules->Find(*i);
-               Version v = m->GetVersion();
+               capabilities.append(i->first);
                if (!v.link_data.empty())
                {
                        capabilities.push_back('=');
@@ -58,10 +59,13 @@ static std::string BuildModeList(ModeType type)
                {
                        std::string mdesc = mh->name;
                        mdesc.push_back('=');
-                       if (mh->GetPrefix())
-                               mdesc.push_back(mh->GetPrefix());
-                       if (mh->GetModeChar())
-                               mdesc.push_back(mh->GetModeChar());
+                       PrefixMode* pm = mh->IsPrefixMode();
+                       if (pm)
+                       {
+                               if (pm->GetPrefix())
+                                       mdesc.push_back(pm->GetPrefix());
+                       }
+                       mdesc.push_back(mh->GetModeChar());
                        modes.push_back(mdesc);
                }
        }