X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Foverride_map.cpp;h=693b07bade23e478818fd7f71c2b03beb57f993e;hb=9f3502de449f3bd4a88163ddc39626305071531f;hp=68551e84f5ba22359cdd4e3a0235c181a4ae40ba;hpb=3a3ff949670c61a4a8856e1391222e156eb1cd17;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/override_map.cpp b/src/modules/m_spanningtree/override_map.cpp index 68551e84f..693b07bad 100644 --- a/src/modules/m_spanningtree/override_map.cpp +++ b/src/modules/m_spanningtree/override_map.cpp @@ -76,15 +76,19 @@ static std::vector 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,15 +168,15 @@ static std::vector GetMap(User* user, TreeServer* current, unsigned return map; } -CmdResult CommandMap::Handle(const std::vector& parameters, User* user) +CmdResult CommandMap::Handle(User* user, const Params& parameters) { if (parameters.size() > 0) { - /* Remote MAP, the server is within the 1st parameter */ + // Remote MAP, the target server is the 1st parameter 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& parameters, User* u std::vector map = GetMap(user, Utils->TreeRoot, max, 0); for (std::vector::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& parameters) +RouteDescriptor CommandMap::GetRouting(User* user, const Params& parameters) { if (!parameters.empty()) return ROUTE_UNICAST(parameters[0]);