summaryrefslogtreecommitdiff
path: root/src/hostserv.cpp
diff options
context:
space:
mode:
authorAdam <Adam@drink-coca-cola.info>2010-05-29 20:44:31 -0400
committerAdam <Adam@anope.org>2010-06-18 21:04:08 -0400
commitb8f9116b19eb511c4f5e6a683725f50bf732a7dd (patch)
treea5848c9797ec4dc3477621fc42211f4985eaec7b /src/hostserv.cpp
parent435c9116e9997634eb7215e998c8f01a5e46fb2c (diff)
Rewrote all of the command handling to get rid of all the nasty strtoks() everywhere, and added a bot map by uid
Diffstat (limited to 'src/hostserv.cpp')
-rw-r--r--src/hostserv.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/hostserv.cpp b/src/hostserv.cpp
index 9d7362903..04bb61e4c 100644
--- a/src/hostserv.cpp
+++ b/src/hostserv.cpp
@@ -79,25 +79,25 @@ void hostserv_init()
* @param buf Buffer holding the message
* @return void
*/
-void hostserv(User * u, char *buf)
+void hostserv(User *u, const std::string &buf)
{
- const char *cmd, *s;
-
- cmd = strtok(buf, " ");
-
- if (!cmd) {
+ if (!u || buf.empty())
return;
- } else if (stricmp(cmd, "\1PING") == 0) {
- if (!(s = strtok(NULL, ""))) {
- s = "";
- }
- ircdproto->SendCTCP(HostServ, u->nick.c_str(), "PING %s", s);
- } else {
- if (ircd->vhost) {
- mod_run_cmd(HostServ, u, cmd);
- } else {
- notice_lang(Config.s_HostServ, u, SERVICE_OFFLINE, Config.s_HostServ);
- }
+
+ if (buf.find("\1PING ", 0, 6) != std::string::npos && buf[buf.length() - 1] == '\1')
+ {
+ std::string command = buf;
+ command.erase(command.begin());
+ command.erase(command.end());
+ ircdproto->SendCTCP(HostServ, u->nick.c_str(), "%s", command.c_str());
+ }
+ else if (!ircd->vhost)
+ {
+ notice_lang(Config.s_HostServ, u, SERVICE_OFFLINE, Config.s_HostServ);
+ }
+ else
+ {
+ mod_run_cmd(HostServ, u, buf.c_str());
}
}