At Tue, 22 Oct 2013 23:09:20 +0100, Martin Kletzander wrote: > > On Tue, Oct 22, 2013 at 09:52:30PM +0100, Eric Blake wrote: > > On 10/22/2013 05:19 PM, Martin Kletzander wrote: > > > On RHEL 5, make syntax-check was failing because even strings like > > > 'int isTempChain' matched the 'int i' rule. To be honest, I haven't > > > found the root cause, but the change added makes it work as expected > > > and keeps the proper behavior on newer systems as well. > > > > > > Signed-off-by: Martin Kletzander <mklet...@redhat.com> > > > --- > > > > > > Notes: > > > I'm not pushing this one as a build breaker since I haven't found the > > > root cause, so feel free to object and fix it differently. > > > > > > cfg.mk | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/cfg.mk b/cfg.mk > > > index 56821e2..e9da282 100644 > > > --- a/cfg.mk > > > +++ b/cfg.mk > > > @@ -555,12 +555,12 @@ sc_avoid_attribute_unused_in_header: > > > $(_sc_search_regexp) > > > > > > sc_prohibit_int_ijk: > > > - @prohibit='\<(int|unsigned) ([^(]* )*(i|j|k)(\s|,|;)' \ > > > + @prohibit='\<(int|unsigned) ([^(]* )*(i|j|k)\>(\s|,|;)' \ > > > > What version of grep on RHEL 5? (I'm without access to my normal RHEL 5 > > VM at the moment.) I'm not seeing an obvious entry in grep's NEWS file, > > but suspect it may be a bug in that old of a grep rather than in our > > regex. At any rate, I agree with the fix: > > > > The thing is that when I tried reproducing it using only grep, the > regexp and the file, there was no match. > > Here are the version-related things: > > # grep -V > grep (GNU grep) 2.5.1 > # rpm -qf $(which grep) > grep-2.5.1-55.el5 > > // Feel free to stop by tomorrow since we're both on KVM Forum, I > // can't express how much interested I am in finding the root cause > // of the regexp failure.
Seems \s is buggy in this grep version with a non UTF-8 locale setting. Observe: $ LANG=en_US.UTF-8 grep -nE '\<(int|unsigned) ([^(]* )*(i|j|k)(\s|,|;)' src/conf/interface_conf.h $ LANG=C grep -nE '\<(int|unsigned) ([^(]* )*(i|j|k)(\s|,|;)' src/conf/interface_conf.h 135: int autoconf; /* only useful if family is ipv6 */ 167: unsigned int active:1; /* 1 if interface is active (up) */ Alas, grep does not colorize anything in the output line in that case (even with --color=always), just as if it does not match anything. According to grep's info pages \s should be equivalent to [[:space:]], but it is not, as the latter works alright: $ LANG=C grep -nE '\<(int|unsigned) ([^(]*)*(i|j|k)([[:space:]]|,|;)' src/conf/interface_conf.h So, I think the right fix would be to avoid \s altogether and use [[:space:]] instead. Claudio -- AV-Test GmbH, Henricistraße 20, 04155 Leipzig, Germany Phone: +49 341 265 310 19 Web:<http://www.av-test.org> Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076) Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list