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())
{
time_t secs_up = ServerInstance->Time() - current->age;
- buffer += " [Up: " + ModuleSpanningTree::TimeToStr(secs_up) + (current->rtt == 0 ? "]" : " Lag: " + ConvToStr(current->rtt) + "ms]");
+ buffer += " [Up: " + InspIRCd::DurationString(secs_up) + (current->rtt == 0 ? "]" : " Lag: " + ConvToStr(current->rtt) + "ms]");
}
std::vector<std::string> map;
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)
{
- /* 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;
}
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]);