[libvirt] [PATCH] syntax-check: rewrite prohibit-duplicate-header in perl

Invoke the script only once instead of once for every file. --- build-aux/prohibit-duplicate-header.pl | 22 ++++++++++++++++++++++ cfg.mk | 29 +++++------------------------ 2 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 build-aux/prohibit-duplicate-header.pl diff --git a/build-aux/prohibit-duplicate-header.pl b/build-aux/prohibit-duplicate-header.pl new file mode 100644 index 0000000..f9ab3f5 --- /dev/null +++ b/build-aux/prohibit-duplicate-header.pl @@ -0,0 +1,22 @@ +#!/usr/bin/perl + +use strict; + +my $file = " "; +my $ret = 0; +my %includes = ( ); + +while (<>) { + if (not $file eq $ARGV) { + %includes = ( ); + $file = $ARGV; + } + if (/^# *include *[<"]([^>"]*\.h)[">]/) { + $includes{$1}++; + if ($includes{$1} == 2) { + $ret = 1; + print STDERR "$1 included multiple times in $ARGV\n"; + } + } +} +exit $ret; diff --git a/cfg.mk b/cfg.mk index 297ca3a..69ab6fe 100644 --- a/cfg.mk +++ b/cfg.mk @@ -813,30 +813,6 @@ sc_prohibit_exit_in_tests: halt='use return, not exit(), in tests' \ $(_sc_search_regexp) -# Don't include duplicate header in the source (either *.c or *.h) -sc_prohibit_duplicate_header: - @fail=0; for i in $$($(VC_LIST_EXCEPT) | grep '\.[chx]$$'); do \ - awk '/# *include.*\.h/ { \ - match($$0, /[<"][^>"]*[">]/); \ - arr[substr($$0, RSTART + 1, RLENGTH - 2)]++; \ - } \ - END { \ - for (key in arr) { \ - if (arr[key] > 1) { \ - fail=1; \ - printf("%d %s are included\n", arr[key], key); \ - } \ - } \ - if (fail == 1) { \ - printf("duplicate header(s) in " FILENAME "\n"); \ - exit 1; \ - } \ - }' $$i || fail=1; \ - done; \ - if test $$fail -eq 1; then \ - { echo '$(ME): avoid duplicate headers' 1>&2; exit 1; } \ - fi; - # Don't include "libvirt/*.h" in "" form. sc_prohibit_include_public_headers_quote: @prohibit='# *include *"libvirt/.*\.h"' \ @@ -1100,6 +1076,11 @@ ifneq ($(_gl-Makefile),) syntax-check: $(top_srcdir)/HACKING spacing-check test-wrap-argv endif +# Don't include duplicate header in the source (either *.c or *.h) +prohibit_duplicate_header: + $(AM_V_GEN)files= $$($(VC_LIST_EXCEPT) | grep '\.[chx]$$') \ + $(PERL) -W $(top_srcdir)/build-aux/prohibit-duplicate-header.pl $$files + spacing-check: $(AM_V_GEN)files=`$(VC_LIST) | grep '\.c$$'`; \ $(PERL) $(top_srcdir)/build-aux/check-spacing.pl $$files || \ -- 2.7.3

On Wed, Jun 15, 2016 at 06:30:39PM +0200, Ján Tomko wrote:
Invoke the script only once instead of once for every file. --- build-aux/prohibit-duplicate-header.pl | 22 ++++++++++++++++++++++ cfg.mk | 29 +++++------------------------ 2 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 build-aux/prohibit-duplicate-header.pl
ECHO request Jan

On Wed, Jun 15, 2016 at 06:30:39PM +0200, Ján Tomko wrote:
Invoke the script only once instead of once for every file. --- build-aux/prohibit-duplicate-header.pl | 22 ++++++++++++++++++++++ cfg.mk | 29 +++++------------------------ 2 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 build-aux/prohibit-duplicate-header.pl
I applied the following diff and the check didn't go off. The old one worked. diff --git i/src/libvirt.c w/src/libvirt.c index a5e0e4148b4a..93757f120ca2 100644 --- i/src/libvirt.c +++ w/src/libvirt.c @@ -42,6 +42,7 @@ #ifdef WITH_CURL # include <curl/curl.h> +# include <sys/wait.h> #endif #include "virerror.h" -- Haven't dug through that though. Martin
participants (2)
-
Ján Tomko
-
Martin Kletzander