X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_namedmodes.cpp;h=26b6339a3aa1415d9c98c0137dcc361438b5da0c;hb=a85bc774f9c4acbb2dbc1d9ddd02a460c5555391;hp=7de6a6caad2eda306c757aa2e31d147123ac1984;hpb=bb1f70114cb986aca7299b8a48f6e727853b426c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_namedmodes.cpp b/src/modules/m_namedmodes.cpp index 7de6a6caa..26b6339a3 100644 --- a/src/modules/m_namedmodes.cpp +++ b/src/modules/m_namedmodes.cpp @@ -1,16 +1,24 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2010 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2009-2010 Daniel De Graaf * - * This program is free but copyrighted software; see - * the file COPYING for details. + * 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 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 . */ + +/* $ModDesc: Provides the ability to manipulate modes via long names. */ + #include "inspircd.h" static void DisplayList(User* user, Channel* channel) @@ -27,9 +35,8 @@ static void DisplayList(User* user, Channel* channel) if (mh->GetNumParams(true)) items << " " << channel->GetModeParameter(letter); } - char pfx[MAXBUF]; - snprintf(pfx, MAXBUF, ":%s 961 %s %s", ServerInstance->Config->ServerName.c_str(), user->nick.c_str(), channel->name.c_str()); - user->SendText(std::string(pfx), items); + const std::string line = ":" + ServerInstance->Config->ServerName + " 961 " + user->nick + " " + channel->name; + user->SendText(line, items); user->WriteNumeric(960, "%s %s :End of mode list", user->nick.c_str(), channel->name.c_str()); } @@ -75,30 +82,39 @@ class CommandProp : public Command } } } - ServerInstance->SendGlobalMode(modes, src); + ServerInstance->Modes->Process(modes, src); return CMD_SUCCESS; } }; +class DummyZ : public ModeHandler +{ + public: + DummyZ(Module* parent) : ModeHandler(parent, "namebase", 'Z', PARAM_ALWAYS, MODETYPE_CHANNEL) + { + list = true; + } +}; + class ModuleNamedModes : public Module { CommandProp cmd; - ModeHandler dummyZ; + DummyZ dummyZ; public: - ModuleNamedModes() : cmd(this), dummyZ(this, "namebase", 'Z', PARAM_ALWAYS, MODETYPE_CHANNEL) + ModuleNamedModes() : cmd(this), dummyZ(this) { } - void init() + void init() CXX11_OVERRIDE { ServerInstance->Modules->AddService(cmd); ServerInstance->Modules->AddService(dummyZ); Implementation eventlist[] = { I_OnPreMode }; - ServerInstance->Modules->Attach(eventlist, this, 1); + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } - Version GetVersion() + Version GetVersion() CXX11_OVERRIDE { return Version("Provides the ability to manipulate modes via long names.",VF_VENDOR); } @@ -108,7 +124,7 @@ class ModuleNamedModes : public Module ServerInstance->Modules->SetPriority(this, I_OnPreMode, PRIORITY_FIRST); } - ModResult OnPreMode(User* source, User* dest, Channel* channel, const std::vector& parameters) + ModResult OnPreMode(User* source, User* dest, Channel* channel, const std::vector& parameters) CXX11_OVERRIDE { if (!channel) return MOD_RES_PASSTHRU; @@ -180,7 +196,7 @@ class ModuleNamedModes : public Module } } newparms[1] = modelist; - ServerInstance->Modes->Process(newparms, source, false); + ServerInstance->Modes->Process(newparms, source); return MOD_RES_DENY; } };