return new cmd_who(Instance);
}
-void cmd_who::Handle (const char** parameters, int pcnt, userrec *user)
+CmdResult cmd_who::Handle (const char** parameters, int pcnt, userrec *user)
{
/*
* XXX - RFC says:
wholine = wholine + getlastchanname(oper) + " " + oper->ident + " " + (opt_showrealhost ? oper->host : oper->dhost) + " " +
oper->server + " " + oper->nick + " ";
+ ch = ServerInstance->FindChan(getlastchanname(oper));
+
/* away? */
if (*oper->awaymsg)
{
wholine.append("*");
}
- wholine = wholine + ch->GetPrefixChar(oper) + " :0 " + oper->fullname;
+ wholine = wholine + (ch ? ch->GetPrefixChar(oper) : "") + " :0 " + oper->fullname;
whoresults.push_back(wholine);
}
}
wholine = wholine + getlastchanname(i->second) + " " + i->second->ident + " " + (opt_showrealhost ? i->second->host : i->second->dhost) + " " +
i->second->server + " " + i->second->nick + " ";
+ ch = ServerInstance->FindChan(getlastchanname(i->second));
+
/* away? */
if (*(i->second)->awaymsg)
{
wholine.append("*");
}
- wholine = wholine + ch->GetPrefixChar(i->second) + " :0 " + i->second->fullname;
+ wholine = wholine + (ch ? ch->GetPrefixChar(i->second) : "") + " :0 " + i->second->fullname;
whoresults.push_back(wholine);
}
}
for (std::vector<std::string>::const_iterator n = whoresults.begin(); n != whoresults.end(); n++)
user->WriteServ(*n);
user->WriteServ("315 %s %s :End of /WHO list.",user->nick, *parameters[0] ? parameters[0] : "*");
+ return CMD_SUCCESS;
}
else
{
/* BZZT! Too many results. */
user->WriteServ("315 %s %s :Too many results",user->nick, parameters[0]);
+ return CMD_FAILURE;
}
}