char* myname = names + 100 * line;
char* mystat = stats + 50 * line;
memset(myname, ' ', depth);
- int w = depth + snprintf(myname + depth, 99 - depth, "%s (%s)", Current->GetName().c_str(), Current->GetID().c_str());
+ int w = depth;
+
+ if (IS_OPER(user))
+ {
+ w += snprintf(myname + depth, 99 - depth, "%s (%s)", Current->GetName().c_str(), Current->GetID().c_str());
+ }
+ else
+ {
+ w += snprintf(myname + depth, 99 - depth, "%s", Current->GetName().c_str());
+ }
memset(myname + w, ' ', 100 - w);
if (w > maxnamew)
maxnamew = w;
// and divisons, we instead render the map onto a backplane of characters
// (a character matrix), then draw the branches as a series of "L" shapes
// from the nodes. This is not only friendlier on CPU it uses less stack.
-int ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, User* user)
+bool ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 0)
{
}
else if (s && s != Utils->TreeRoot)
{
- std::deque<std::string> params;
+ parameterlist params;
params.push_back(parameters[0]);
params[0] = s->GetName();
// Don't return if s == Utils->TreeRoot (us)
if (ret)
- return 1;
+ return true;
}
// These arrays represent a virtual screen which we will
}
}
- float avg_users = totusers * 1.0 / totservers;
+ float avg_users = totusers * 1.0 / line;
- // dump the whole lot to the user.
- if (IS_LOCAL(user))
+ ServerInstance->Logs->Log("map",DEBUG,"local");
+ for (int t = 0; t < line; t++)
{
- ServerInstance->Logs->Log("map",DEBUG,"local");
- for (int t = 0; t < line; t++)
- {
- // terminate the string at maxnamew characters
- names[100 * t + maxnamew] = '\0';
- user->WriteNumeric(RPL_MAP, "%s :%s %s",user->nick.c_str(),names + 100 * t, stats + 50 * t);
- }
- user->WriteNumeric(RPL_MAPUSERS, "%s :%d server%s and %d user%s, average %.2f users per server",user->nick.c_str(),totservers,(totservers > 1 ? "s" : ""),totusers,(totusers > 1 ? "s" : ""),avg_users);
- user->WriteNumeric(RPL_ENDMAP, "%s :End of /MAP",user->nick.c_str());
+ // terminate the string at maxnamew characters
+ names[100 * t + maxnamew] = '\0';
+ user->SendText(":%s %d %s :%s %s", ServerInstance->Config->ServerName.c_str(),
+ RPL_MAP, user->nick.c_str(), names + 100 * t, stats + 50 * t);
}
- else
- {
- ServerInstance->Logs->Log("map", DEBUG, "remote dump lines=%d", line);
+ user->SendText(":%s %d %s :%d server%s and %d user%s, average %.2f users per server",
+ ServerInstance->Config->ServerName.c_str(), RPL_MAPUSERS, user->nick.c_str(),
+ line, (line > 1 ? "s" : ""), totusers, (totusers > 1 ? "s" : ""), avg_users);
+ user->SendText(":%s %d %s :End of /MAP", ServerInstance->Config->ServerName.c_str(),
+ RPL_ENDMAP, user->nick.c_str());
- // XXX: annoying that we have to use hardcoded numerics here..
- for (int t = 0; t < line; t++)
- {
- // terminate the string at maxnamew characters
- char* name = names + 100 * t;
- char* stat = stats + 50 * t;
- name[maxnamew] = '\0';
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 006 " + user->nick + " :" + name + " " + stat);
- }
-
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 270 " + user->nick + " :" + ConvToStr(totservers) + " server"+(totservers > 1 ? "s" : "") + " and " + ConvToStr(totusers) + " user"+(totusers > 1 ? "s" : "") + ", average " + ConvToStr(avg_users) + " users per server");
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 007 " + user->nick + " :End of /MAP");
- }
delete[] names;
delete[] stats;
- return 1;
+ return true;
}