On Wed, May 16, 2018 at 12:17:16PM +0100, Daniel P. Berrangé wrote: > Historically we matched log filters with strstr(), and when switching to > fnmatch in cbb0fd3cfdc287f6f4653ef1f04a7cfb2ea51b27, it was stated that > we would continue to match substrings, with "foo" being equivalent to > "*foo*". Unfortuntely I forget to provide the code to actually make that > happen. This fixes it to prepend and append "*". We don't bother to > check if the pattern already has a leading/trailing '*', because > "**foo**" will match the same as "*foo*". > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > > Changed in v2: > > - Simplify to always append/prepend '*' > - Other fixes from Erik > > src/util/virlog.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/util/virlog.c b/src/util/virlog.c > index be9fc0cf78..9b63b8e7cd 100644 > --- a/src/util/virlog.c > +++ b/src/util/virlog.c > @@ -1409,6 +1409,7 @@ virLogFilterNew(const char *match, > { > virLogFilterPtr ret = NULL; > char *mdup = NULL; > + size_t mlen = strlen(match); > > virCheckFlags(VIR_LOG_STACK_TRACE, NULL); > > @@ -1418,9 +1419,16 @@ virLogFilterNew(const char *match, > return NULL; > } > > - if (VIR_STRDUP_QUIET(mdup, match) < 0) > + /* We must treat 'foo' as equiv to '*foo*' for fnmatch > + * todo substring matches, so add 2 extra bytes */ An extra comment block closing sequence at the ^end of the line, or one extra below, I don't care as long as one is dropped to pass compilation... > + */ > + if (VIR_ALLOC_N_QUIET(mdup, mlen + 3) < 0) > return NULL; > > + mdup[0] = '*'; > + memcpy(mdup + 1, match, mlen); > + mdup[mlen + 1] = '*'; > + Oh, nice simplification indeed. Reviewed-by: Erik Skultety <eskultet@xxxxxxxxxx> -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list