/* * Baltisot * Copyright (C) 1999-2008 Nicolas "Pixel" Noble * * 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 */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "BRegex.h" #include "gettext.h" char t[1024]; Regex empty("^$"), any(".*"); Regex::Regex(const String & regex, int acflags, int aeflags) throw (GeneralException) : cflags(acflags), eflags(aeflags), pattern(regex.strdup()) { int r; if ((r = regcomp(&preg, pattern, cflags | REG_NOSUB))) { std::cerr << _("Error in regcomp:"); regerror(r, &preg, t, sizeof(t)); std::cerr << t << std::endl; throw GeneralException(String(_("Regex \"")) + regex + _("\" failed to compile: ") + t + "\n"); } } Regex::Regex(const Regex & regex) : pattern(Base::strdup(regex.pattern)), cflags(regex.cflags), eflags(regex.eflags) { int r; if ((r = regcomp(&preg, pattern, cflags | REG_NOSUB))) { printm(M_ERROR, _("Error in regcomp:")); regerror(r, &preg, t, sizeof(t)); printm(M_ERROR, "%s\n", t); throw GeneralException(String(_("Regex \"")) + pattern + _("\" failed to compile: ") + t + "\n"); } } Regex::~Regex() { regfree(&preg); free(pattern); } bool Regex::Match(const String & s, int nmatch, regmatch_t * pmatch) const { if (regexec(&preg, s.to_charp(), nmatch, pmatch, eflags)) { return false; } else { return true; } } String Regex::GetPattern() const { return pattern; }