- std::map<irc::string, std::string>::iterator iter = helpop_map.find(parameter);
-
- if (iter == helpop_map.end())
- {
- iter = helpop_map.find("nohelp");
- }
-
- std::string value = iter->second;
- irc::sepstream stream(value, '\n');
- std::string token = "*";
-
- while (stream.GetToken(token))
- {
- // Writing a blank line will not work with some clients
- if (token.empty())
- user->WriteServ("292 %s : ", user->nick.c_str());
- else
- user->WriteServ("292 %s :%s", user->nick.c_str(), token.c_str());
- }
-
- user->WriteServ("292 %s : -", user->nick.c_str());
- user->WriteServ("292 %s :*** End of HELPOP", user->nick.c_str());
- }
+ const HelpTopic& entry = titer->second;
+ user->WriteNumeric(RPL_HELPSTART, topic, entry.title);
+ for (HelpMessage::const_iterator liter = entry.body.begin(); liter != entry.body.end(); ++liter)
+ user->WriteNumeric(RPL_HELPTXT, topic, *liter);
+ user->WriteNumeric(RPL_ENDOFHELP, topic, "End of /HELPOP.");