X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Futil.cpp;h=1ea62d3bf05106ba4581f3ab883d3f5fa311746c;hb=HEAD;hp=bcf1e69bbc4f9941b3def37c97c9a770ce466b8c;hpb=b893b551f97213efbf6e84732c26a2ddb89bcb9b;p=metaproxy-moved-to-github.git diff --git a/src/util.cpp b/src/util.cpp index bcf1e69..1ea62d3 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy 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 @@ -26,6 +26,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include +#include + +#include #include @@ -727,6 +730,36 @@ const char *mp::wrbuf::buf() return wrbuf_buf(m_wrbuf); } +const char *mp::wrbuf::c_str() +{ + return wrbuf_cstr(m_wrbuf); +} + +const char *mp::wrbuf::c_str_null() +{ + return wrbuf_cstr_null(m_wrbuf); +} + +bool mp::util::match_ip(const std::string &pattern, const std::string &value) +{ + std::vector globitems; + // split may produce empty strings as results - in particular + // the empty pattern produces one empty string (vector size 1) + boost::split(globitems, pattern, boost::is_any_of(" ")); + bool ret_value = true; // for now (if only empty values) + std::vector::const_iterator it = globitems.begin(); + for (; it != globitems.end(); it++) + { + const char *c_str = (*it).c_str(); + if (*c_str) + { + ret_value = false; // at least one non-empty value + if (yaz_match_glob(c_str, value.c_str())) + return true; + } + } + return ret_value; +} /* * Local variables: