[libvirt] [PATCH v2 1/3] util: introduce virStringMatch

Pavel Hrdina phrdina at redhat.com
Fri May 12 14:33:19 UTC 2017


On Fri, May 12, 2017 at 04:26:43PM +0200, Martin Kletzander wrote:
> On Fri, May 12, 2017 at 02:57:54PM +0200, Pavel Hrdina wrote:
> >Simply tries to match the provided regex on a string and returns
> >the result.  Useful if caller don't care about the matched substring
> >and want to just test if some pattern patches a string.
> >
> >Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> >---
> >
> >changes in v2:
> >    - virStringMatch returns bool instead of int
> >
> > src/libvirt_private.syms |  1 +
> > src/util/virstring.c     | 33 +++++++++++++++++++++++++++++++++
> > src/util/virstring.h     |  3 +++
> > tests/virstringtest.c    | 47 +++++++++++++++++++++++++++++++++++++++++++++++
> > 4 files changed, 84 insertions(+)
> >
> >diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> >index afb9100c50..d32c6e7549 100644
> >--- a/src/libvirt_private.syms
> >+++ b/src/libvirt_private.syms
> >@@ -2621,6 +2621,7 @@ virStringListHasString;
> > virStringListJoin;
> > virStringListLength;
> > virStringListRemove;
> >+virStringMatch;
> > virStringReplace;
> > virStringSearch;
> > virStringSortCompare;
> >diff --git a/src/util/virstring.c b/src/util/virstring.c
> >index 335e773d78..c8d6b0ca02 100644
> >--- a/src/util/virstring.c
> >+++ b/src/util/virstring.c
> >@@ -979,6 +979,39 @@ virStringSearch(const char *str,
> > }
> >
> > /**
> >+ * virStringMatch:
> >+ * @str: string to match
> >+ * @regexp: POSIX Extended regular expression pattern used for matching
> >+ *
> >+ * Performs a POSIX extended regex match against a string.
> >+ * Returns true on match, false on error or no match.
> >+ */
> >+bool
> >+virStringMatch(const char *str,
> >+               const char *regexp)
> >+{
> >+    regex_t re;
> >+    int rv;
> >+
> >+    VIR_DEBUG("match '%s' for '%s'", str, regexp);
> >+
> >+    if ((rv = regcomp(&re, regexp, REG_EXTENDED | REG_NOSUB)) != 0) {
> >+        char error[100];
> >+        regerror(rv, &re, error, sizeof(error));
> >+        virReportError(VIR_ERR_INTERNAL_ERROR,
> >+                       _("error while compiling regular expression '%s': %s"),
> >+                       regexp, error);
> >+        return false;
> 
> Don't report the error, just return false.  Or do VIR_WARN() if you
> want.  The conversion to bool was meant together with the fact that
> lastError should not be set.
> 
> ACK with that.

I'll go with VIR_WARN(), thanks.

Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170512/2c51679c/attachment-0001.sig>


More information about the libvir-list mailing list