You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/mask/libkvimask.cpp

202 lines
4.8 KiB

//
// 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)
{
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:
<string> $mask.nick(<mask:string>)
@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:
<string> $mask.user(<mask:string>)
@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:
<string> $mask.host(<mask:string>)
@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:
<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)
{
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
)