]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/override_map.cpp
Merge branch 'insp20' into master.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / override_map.cpp
index 612df80f3ef0802b9e8ee04f1d8c83ddf084893f..693b07bade23e478818fd7f71c2b03beb57f993e 100644 (file)
@@ -76,15 +76,19 @@ static std::vector<std::string> GetMap(User* user, TreeServer* current, unsigned
        std::string buffer = current->GetName();
        if (user->IsOper())
        {
-               buffer += " (" + current->GetID() + ")";
+               buffer += " (" + current->GetID();
+
+               const std::string& cur_vers = current->GetRawVersion();
+               if (!cur_vers.empty())
+                       buffer += " " + cur_vers;
+
+               buffer += ")";
        }
 
        // Pad with spaces until its at max len, max_len must always be >= my names length
        buffer.append(max_len - current->GetName().length(), ' ');
 
-       char buf[16];
-       snprintf(buf, sizeof(buf), "%5d [%5.2f%%]", current->UserCount, percent);
-       buffer += buf;
+       buffer += InspIRCd::Format("%5d [%5.2f%%]", current->UserCount, percent);
 
        if (user->IsOper())
        {
@@ -164,7 +168,7 @@ static std::vector<std::string> GetMap(User* user, TreeServer* current, unsigned
        return map;
 }
 
-CmdResult CommandMap::Handle(const std::vector<std::string>& parameters, User* user)
+CmdResult CommandMap::Handle(User* user, const Params& parameters)
 {
        if (parameters.size() > 0)
        {
@@ -172,7 +176,7 @@ CmdResult CommandMap::Handle(const std::vector<std::string>& parameters, User* u
                TreeServer* s = Utils->FindServerMask(parameters[0]);
                if (!s)
                {
-                       user->WriteNumeric(ERR_NOSUCHSERVER, "%s :No such server", parameters[0].c_str());
+                       user->WriteNumeric(ERR_NOSUCHSERVER, parameters[0], "No such server");
                        return CMD_FAILURE;
                }
 
@@ -199,22 +203,19 @@ CmdResult CommandMap::Handle(const std::vector<std::string>& parameters, User* u
 
        std::vector<std::string> map = GetMap(user, Utils->TreeRoot, max, 0);
        for (std::vector<std::string>::const_iterator i = map.begin(); i != map.end(); ++i)
-               user->SendText(":%s %03d %s :%s", ServerInstance->Config->ServerName.c_str(),
-                       RPL_MAP, user->nick.c_str(), i->c_str());
+               user->WriteRemoteNumeric(RPL_MAP, *i);
 
        size_t totusers = ServerInstance->Users->GetUsers().size();
        float avg_users = (float) totusers / Utils->serverlist.size();
 
-       user->SendText(":%s %03d %s :%u server%s and %u user%s, average %.2f users per server",
-               ServerInstance->Config->ServerName.c_str(), RPL_MAPUSERS, user->nick.c_str(),
-               (unsigned int)Utils->serverlist.size(), (Utils->serverlist.size() > 1 ? "s" : ""), (unsigned int)totusers, (totusers > 1 ? "s" : ""), avg_users);
-       user->SendText(":%s %03d %s :End of /MAP", ServerInstance->Config->ServerName.c_str(),
-               RPL_ENDMAP, user->nick.c_str());
+       user->WriteRemoteNumeric(RPL_MAPUSERS, InspIRCd::Format("%u server%s and %u user%s, average %.2f users per server",
+               (unsigned int)Utils->serverlist.size(), (Utils->serverlist.size() > 1 ? "s" : ""), (unsigned int)totusers, (totusers > 1 ? "s" : ""), avg_users));
+       user->WriteRemoteNumeric(RPL_ENDMAP, "End of /MAP");
 
        return CMD_SUCCESS;
 }
 
-RouteDescriptor CommandMap::GetRouting(User* user, const std::vector<std::string>& parameters)
+RouteDescriptor CommandMap::GetRouting(User* user, const Params& parameters)
 {
        if (!parameters.empty())
                return ROUTE_UNICAST(parameters[0]);