On 04/16/2013 07:41 AM, Osier Yang wrote: > Except gnulib... > --- > cfg.mk | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/cfg.mk b/cfg.mk > index e60c4e3..71f7ee4 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -722,6 +722,28 @@ 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: > + @for i in $$($(VC_LIST_EXCEPT) | grep '\.[ch]$$'); do \ You also cleaned up .x files, so use [chx] instead of [ch]. > + awk 'BEGIN { \ > + FS=" "; \ I don't think you need to set FS, if you use my match/substr change. > + fail=0; \ > + } \ > + /^# *include.*\.h[">]$$/ { \ > + arr[$$NF]++; \ > + } \ Here's where my comments on patch 1 should be incorporated: /# *include/ { \ match($0, /[<"][^>"]*[">]/) \ arr[substr($0, RMATCH + 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) \ > + exit 1; \ > + }' $$i || { echo "Duplicate header(s) in $$i"; exit 1; }; \ This exits on first failure, instead of collecting all failures in one go. It also misses the prefix $(ME): used in other error messages, and should be sent to stderr. I would do: @fail=0; for i in ... awk '{ ... if (fail == 1) { printf("duplicate header(s) in " FILENAME } }' $$i || fail=1 done; if test $$fail = 1; then { echo "$(ME): avoid duplicate headers" >&2; exit 1; } fi -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list