[libvirt] [PATCH 01/10] cleanup: Remove the duplicate header

Eric Blake eblake at redhat.com
Wed Apr 17 02:50:27 UTC 2013


On 04/16/2013 07:41 AM, Osier Yang wrote:
> Detected by a simple Shell script:
> 
> for i in $(find -type f -name "*.[ch]" | grep -v gnulib); do

You can limit things to version-controlled files a bit faster with:

for i in $(git ls-files -- '*.[ch]'); do

>     awk 'BEGIN {
>         FS=" "
>         fail=0
>     }
>     /^# *include.*\.h[">]$/{

This pattern misses files that include a header with a comment saying
why, such as this one:

src/util/virxml.c:#include <math.h>               /* for isnan() */


>         arr[$NF]++

This doesn't catch duplication between "" and <> in the same file, since
it includes the delimiter as part of the key name.  Slightly more
powerful is:

/# *include/{
    match($0, /["<][^">]*[">]/)
    arr[substr($0, RSTART+1, RLENGTH-2)]++
}

which uses the array name of just the filename regardless of delimiters.

>     }
>     END {
>         for (key in arr) {
>             if (arr[key] > 1) {
>                 fail=1
>                 printf("%d %s\n", arr[key], key)
>             }
>         }
>         if (fail == 1)
>             exit 1
>     }' $i
> 
>     if test $? != 0; then
>         echo "Duplicate header(s) in $i"
>     fi
> done;
> 
> A later patch will add the syntax-check to avoid duplicate
> headers.
> ---

What you have works, but with my improvements to the script, I still see
this after your patch:

2 testutils.h
Duplicate header(s) in ./tests/qemumonitortest.c
2 testutils.h
Duplicate header(s) in ./tests/qemuxmlnstest.c
2 testutils.h
Duplicate header(s) in ./tests/qemuxml2argvtest.c
2 testutils.h
Duplicate header(s) in ./tests/qemuargv2xmltest.c
2 testutils.h
Duplicate header(s) in ./tests/shunloadtest.c
2 testutils.h
Duplicate header(s) in ./tests/vmx2xmltest.c
2 testutils.h
Duplicate header(s) in ./tests/domainsnapshotxml2xmltest.c
2 testutils.h
Duplicate header(s) in ./tests/qemuhelptest.c
2 testutils.h
Duplicate header(s) in ./tests/lxcxml2xmltest.c
2 testutils.h
Duplicate header(s) in ./tests/xml2vmxtest.c
2 testutils.h
Duplicate header(s) in ./tests/qemuxml2xmltest.c
2 testutils.h
Duplicate header(s) in ./tests/esxutilstest.c
2 testutils.h
Duplicate header(s) in ./tests/openvzutilstest.c
2 libxl.h
Duplicate header(s) in ./src/libxl/libxl_driver.c

testutils.h is cleaned up in patch 2; but the duplicate libxl.h in
libxl_driver.c is still buggy.

ACK with libxl_driver.c also fixed (you can touch up the commit message
if you like, but that's not required; as long as we later get the syntax
check right).

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130416/1cbfcd3c/attachment-0001.sig>


More information about the libvir-list mailing list