X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_watch.cpp;h=029055db4ee9cb8716f66115a32650ee80e11c49;hb=6b929c6dbb3d36c3873ab9911ad4d8a46ddbdc99;hp=ab32c674047ba31f5ccc2bb58019e9d019d0f16d;hpb=6d57bbe05c31c79eaad02fe81cfb9c1ed6b79c58;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_watch.cpp b/src/modules/m_watch.cpp index ab32c6740..029055db4 100644 --- a/src/modules/m_watch.cpp +++ b/src/modules/m_watch.cpp @@ -1,16 +1,25 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2005-2008 Craig Edwards + * Copyright (C) 2006-2008 Robin Burchell + * Copyright (C) 2007 Dennis Friis * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * --------------------------------------------------- + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include "inspircd.h" /* $ModDesc: Provides support for the /WATCH command */ @@ -90,7 +99,7 @@ #if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) typedef nspace::hash_map, nspace::hash_compare > > watchentries; #else - typedef nspace::hash_map, nspace::hash > watchentries; + typedef nspace::hash_map, irc::hash> watchentries; #endif typedef std::map watchlist; @@ -103,7 +112,7 @@ watchentries* whos_watching_me; class CommandSVSWatch : public Command { public: - CommandSVSWatch (InspIRCd* Instance, Module* Creator) : Command(Instance, Creator,"SVSWATCH", 0, 2) + CommandSVSWatch(Module* Creator) : Command(Creator,"SVSWATCH", 2) { syntax = " [C|L|S]|[+|-]"; TRANSLATE3(TR_NICK, TR_TEXT, TR_END); /* we watch for a nick. not a UID. */ @@ -128,7 +137,10 @@ class CommandSVSWatch : public Command RouteDescriptor GetRouting(User* user, const std::vector& parameters) { - return ROUTE_BROADCAST; + User* target = ServerInstance->FindNick(parameters[0]); + if (target) + return ROUTE_OPT_UCAST(target->server); + return ROUTE_LOCALONLY; } }; @@ -248,8 +260,7 @@ class CommandWatch : public Command return CMD_SUCCESS; } - CommandWatch (InspIRCd* Instance, Module* parent, unsigned int &maxwatch) - : Command(Instance,parent,"WATCH",0,0), MAX_WATCH(maxwatch), ext("watchlist", parent) + CommandWatch(Module* parent, unsigned int &maxwatch) : Command(parent,"WATCH", 0), MAX_WATCH(maxwatch), ext("watchlist", parent) { syntax = "[C|L|S]|[+|-]"; TRANSLATE2(TR_TEXT, TR_END); /* we watch for a nick. not a UID. */ @@ -368,21 +379,21 @@ class Modulewatch : public Module CommandSVSWatch sw; public: - Modulewatch(InspIRCd* Me) - : Module(Me), maxwatch(32), cmdw(Me, this, maxwatch), sw(Me,this) + Modulewatch() + : maxwatch(32), cmdw(this, maxwatch), sw(this) { OnRehash(NULL); whos_watching_me = new watchentries(); ServerInstance->AddCommand(&cmdw); ServerInstance->AddCommand(&sw); - Extensible::Register(&cmdw.ext); - Implementation eventlist[] = { I_OnRehash, I_OnGarbageCollect, I_OnCleanup, I_OnUserQuit, I_OnPostConnect, I_OnUserPostNick, I_On005Numeric, I_OnSetAway }; - ServerInstance->Modules->Attach(eventlist, this, 8); + ServerInstance->Extensions.Register(&cmdw.ext); + Implementation eventlist[] = { I_OnRehash, I_OnGarbageCollect, I_OnUserQuit, I_OnPostConnect, I_OnUserPostNick, I_On005Numeric, I_OnSetAway }; + ServerInstance->Modules->Attach(eventlist, this, 7); } virtual void OnRehash(User* user) { - ConfigReader Conf(ServerInstance); + ConfigReader Conf; maxwatch = Conf.ReadInteger("watch", "maxentries", 0, true); if (!maxwatch) maxwatch = 32; @@ -529,7 +540,7 @@ class Modulewatch : public Module virtual Version GetVersion() { - return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION); + return Version("Provides support for the /WATCH command", VF_OPTCOMMON | VF_VENDOR); } };