diff options
author | Adam <Adam@drink-coca-cola.info> | 2010-05-29 20:44:31 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-06-18 21:04:08 -0400 |
commit | b8f9116b19eb511c4f5e6a683725f50bf732a7dd (patch) | |
tree | a5848c9797ec4dc3477621fc42211f4985eaec7b /src/hostserv.cpp | |
parent | 435c9116e9997634eb7215e998c8f01a5e46fb2c (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.cpp | 34 |
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()); } } |