diff options
Diffstat (limited to 'src/modules/mask/libkvimask.cpp')
-rw-r--r-- | src/modules/mask/libkvimask.cpp | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/src/modules/mask/libkvimask.cpp b/src/modules/mask/libkvimask.cpp new file mode 100644 index 00000000..3f8be4b2 --- /dev/null +++ b/src/modules/mask/libkvimask.cpp @@ -0,0 +1,201 @@ +// +// File : libkvistr.cpp +// Creation date : Thu Dec 27 2001 17:13:12 GMT by Szymon Stefanek +// +// This str is part of the KVirc irc client distribution +// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net) +// +// This program 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; either version 2 +// of the License, or (at your opinion) any later version. +// +// 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, write to the Free Software Foundation, +// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// + + +#include "kvi_module.h" + +#include "kvi_locale.h" +#include "kvi_string.h" +#include "kvi_ircmask.h" + + /* + @doc: mask.match + @type: + function + @title: + $mask.match + @short: + Matches a mask agains a wildcarded one + @syntax: + <boolean> $mask.match(<wildcard_mask:string>,<fixed_mask:string>) + @description: + Returns 1 if the <wildcard_mask> matches <fixed_mask> and 0 otherwise. + <wildcard_mask> can obviously contain wildcards ('*' and '?'). + @example: + [example] + [cmd]if[/cmd]($mask.match(*!*@*.linux.it,$0)) + [cmd]op[/cmd] [fnc]$mask.nick[/fnc]($0) + [/example] + */ + +static bool mask_kvs_fnc_match(KviKvsModuleFunctionCall * c) +{ + + QString wildmask,fixedmask; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("wildcard mask",KVS_PT_STRING,0,wildmask) + KVSM_PARAMETER("fixed mask",KVS_PT_STRING,0,fixedmask) + KVSM_PARAMETERS_END(c) + KviIrcMask mk1(wildmask); + KviIrcMask mk2(fixedmask); + c->returnValue()->setBoolean(mk1.matchesFixed(mk2.nick(),mk2.user(),mk2.host())); + return true; +} + + /* + @doc: mask.nick + @type: + function + @title: + $mask.nick + @short: + Returns the nick part of an IRC mask + @syntax: + <string> $mask.nick(<mask:string>) + @description: + Returns the nickname part of an IRC mask. + */ + +static bool mask_kvs_fnc_nick(KviKvsModuleFunctionCall * c) +{ + + QString mask; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask) + KVSM_PARAMETERS_END(c) + KviIrcMask mk(mask); + c->returnValue()->setString(mk.nick()); + return true; +} + + /* + @doc: mask.user + @type: + function + @title: + $mask.user + @short: + Returns the username part of an IRC mask + @syntax: + <string> $mask.user(<mask:string>) + @description: + Returns the username part of an IRC mask. + */ + +static bool mask_kvs_fnc_user(KviKvsModuleFunctionCall * c) +{ + + QString mask; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask) + KVSM_PARAMETERS_END(c) + KviIrcMask mk(mask); + c->returnValue()->setString(mk.user()); + return true; +} + + + /* + @doc: mask.host + @type: + function + @title: + $mask.host + @short: + Returns the hostname part of an IRC mask + @syntax: + <string> $mask.host(<mask:string>) + @description: + Returns the hostname part of an IRC mask. + */ + +static bool mask_kvs_fnc_host(KviKvsModuleFunctionCall * c) +{ + QString mask; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask) + KVSM_PARAMETERS_END(c) + KviIrcMask mk(mask); + c->returnValue()->setString(mk.host()); + return true; +} + + + /* + @doc: mask.hasnumerichost + @type: + function + @title: + $mask.hasNumericHost + @short: + Checks if a host part of a mask is numeric + @syntax: + <boolean> $mask.hasNumericHost(<mask: string>) + @description: + Returns 1 if the hostname part of the mask is numeric (e.g : unresolved IPV4 or IPV6 address) + */ + + +static bool mask_kvs_fnc_hasnumerichost(KviKvsModuleFunctionCall * c) +{ + QString mask; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask) + KVSM_PARAMETERS_END(c) + KviIrcMask mk(mask); + c->returnValue()->setBoolean(mk.hasNumericHost()); + return true; +} + + +/*********************************************************************/ +// Module stuff +/********************************************************************/ + + + +static bool mask_module_init(KviModule * m) +{ + KVSM_REGISTER_FUNCTION(m,"match",mask_kvs_fnc_match); + KVSM_REGISTER_FUNCTION(m,"nick",mask_kvs_fnc_nick); + KVSM_REGISTER_FUNCTION(m,"user",mask_kvs_fnc_user); + KVSM_REGISTER_FUNCTION(m,"host",mask_kvs_fnc_host); + KVSM_REGISTER_FUNCTION(m,"hasnumerichost",mask_kvs_fnc_hasnumerichost); + + return true; +} + +static bool mask_module_cleanup(KviModule *m) +{ + return true; +} + +KVIRC_MODULE( + "File", // module name + "1.0.0", // module version + "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", + "Mask manipulation functions", + mask_module_init, + 0, + 0, + mask_module_cleanup +) |