/* kbs - Simple, easily fooled, POP3 spam filter Copyright (C) 2003 Ian Cowburn (ianc@noddybox.demon.co.uk) 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 option) 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------- Common utilities */ static const char id[]="$Id$"; #include #include #include "global.h" #include "rexp.h" #include "config.h" #include "util.h" static const char header_id[]=KBS_REXP_H; /* ---------------------------------------- TYPES */ struct RE_Expression { regex_t re; char *expr; }; /* ---------------------------------------- INTERFACES */ RE_Expression RECompile(const char *regexpr) { RE_Expression re; int flags; re=Malloc(sizeof *re); flags=REG_EXTENDED|REG_NOSUB; if (!ConfigInt(CONFIG_CASESENSE)) flags|=REG_ICASE; if (regcomp(&re->re,regexpr,flags)) { free(re); re=NULL; } else { re->expr=CopyStr(regexpr); } return re; } int RESearch(const RE_Expression re, const char *string) { int ret; ret=regexec(&re->re,string,0,NULL,0); return !ret; } const char *REGetExpression(const RE_Expression re) { return re->expr; } void REFree(RE_Expression re) { if (re) { regfree(&re->re); free(re->expr); free(re); } } /* END OF FILE */