X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommands%2Fcmd_ison.cpp;h=ca7639b586f0fa2f45e56b717bf9be140e174fab;hb=fb3964d5c007900061e86e392ceb786bd47260c0;hp=ba119e251c3fc630dd934b2de5d1f0ccaee215fc;hpb=dd36852a52e8541306b76c5b88bce8ab9b36654c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/commands/cmd_ison.cpp b/src/commands/cmd_ison.cpp index ba119e251..ca7639b58 100644 --- a/src/commands/cmd_ison.cpp +++ b/src/commands/cmd_ison.cpp @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -12,22 +12,47 @@ */ #include "inspircd.h" -#include "commands/cmd_ison.h" -extern "C" DllExport Command* init_command(InspIRCd* Instance) +#ifndef __CMD_ISON_H__ +#define __CMD_ISON_H__ + +// include the common header files + +#include "users.h" +#include "channels.h" + +/** Handle /ISON. These command handlers can be reloaded by the core, + * and handle basic RFC1459 commands. Commands within modules work + * the same way, however, they can be fully unloaded, where these + * may not. + */ +class CommandIson : public Command { - return new CommandIson(Instance); -} + public: + /** Constructor for ison. + */ + CommandIson ( Module* parent) : Command(parent,"ISON",0,0) { syntax = " {nick}"; } + /** Handle command. + * @param parameters The parameters to the comamnd + * @param pcnt The number of parameters passed to teh command + * @param user The user issuing the command + * @return A value from CmdResult to indicate command success or failure. + */ + CmdResult Handle(const std::vector& parameters, User *user); +}; + +#endif + /** Handle /ISON */ -CmdResult CommandIson::Handle (const char* const* parameters, int pcnt, User *user) +CmdResult CommandIson::Handle (const std::vector& parameters, User *user) { std::map ison_already; User *u; std::string reply = std::string("303 ") + user->nick + " :"; - for (int i = 0; i < pcnt; i++) + for (unsigned int i = 0; i < parameters.size(); i++) { u = ServerInstance->FindNick(parameters[i]); if (ison_already.find(u) != ison_already.end()) @@ -35,9 +60,6 @@ CmdResult CommandIson::Handle (const char* const* parameters, int pcnt, User *us if (u) { - if (u->Visibility && !u->Visibility->VisibleTo(user)) - continue; - reply.append(u->nick).append(" "); if (reply.length() > 450) { @@ -48,7 +70,7 @@ CmdResult CommandIson::Handle (const char* const* parameters, int pcnt, User *us } else { - if ((i == pcnt-1) && (strchr(parameters[i],' '))) + if ((i == parameters.size() - 1) && (parameters[i].find(' ') != std::string::npos)) { /* Its a space seperated list of nicks (RFC1459 says to support this) */ @@ -63,9 +85,6 @@ CmdResult CommandIson::Handle (const char* const* parameters, int pcnt, User *us if (u) { - if (u->Visibility && !u->Visibility->VisibleTo(user)) - continue; - reply.append(u->nick).append(" "); if (reply.length() > 450) { @@ -85,3 +104,5 @@ CmdResult CommandIson::Handle (const char* const* parameters, int pcnt, User *us return CMD_SUCCESS; } + +COMMAND_INIT(CommandIson)