// // 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: $mask.match(,) @description: Returns 1 if the matches and 0 otherwise. 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) { TQString 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: $mask.nick() @description: Returns the nickname part of an IRC mask. */ static bool mask_kvs_fnc_nick(KviKvsModuleFunctionCall * c) { TQString 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: $mask.user() @description: Returns the username part of an IRC mask. */ static bool mask_kvs_fnc_user(KviKvsModuleFunctionCall * c) { TQString 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: $mask.host() @description: Returns the hostname part of an IRC mask. */ static bool mask_kvs_fnc_host(KviKvsModuleFunctionCall * c) { TQString 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: $mask.hasNumericHost() @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) { TQString 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 )