On Tue, Jun 18, 2019 at 11:13:16AM -0500, Jonathon Jongsma wrote:
Internal headers should use #pragma once instead of the standard #ifndef guard. Public headers still require the existing header guard. Signed-off-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> --- build-aux/header-ifdef.pl | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/build-aux/header-ifdef.pl b/build-aux/header-ifdef.pl index 401f25fb81..d63aae779b 100644 --- a/build-aux/header-ifdef.pl +++ b/build-aux/header-ifdef.pl @@ -6,18 +6,26 @@ # ...copyright header... # */ # <one blank line> -# #ifndef SYMBOL -# # define SYMBOL +# #pragma once # ....content.... -# #endif /* SYMBOL */ # -# For any file ending priv.h, before the #ifndef +#--- +# +# For any file ending priv.h, before the #pragma once # We will have a further section # # #ifndef SYMBOL_ALLOW # # error .... # #endif /* SYMBOL_ALLOW */ # <one blank line> +# +#--- +# +# For public headers (files in include/), use the standard header guard instead of #pragma once: +# #ifndef SYMBOL +# # define SYMBOL +# ....content.... +# #endif /* SYMBOL */ use strict; use warnings; @@ -38,6 +46,7 @@ my $file = " "; my $ret = 0; my $ifdef = ""; my $ifdefpriv = ""; +my $publicheader = 0; my $state = $STATE_EOF; my $mistake = 0; @@ -83,6 +92,7 @@ while (<>) { $file = $ARGV; $state = $STATE_COPYRIGHT_COMMENT; $mistake = 0; + $publicheader = ($ARGV =~ /\/include\//);
The comment above says include/ but this checks for /include/, breaking the check for me. Also, the error messages above this code will need tuning - if I delete everything from qemu_command.h starting with '#pragma once', I get the wrong error: src/qemu/qemu_command.h: missing '#ifndef LIBVIRT_QEMU_COMMAND_H' at ./build-aux/header-ifdef.pl line 56, <> line 32534.
} if ($mistake || @@ -133,12 +143,19 @@ while (<>) { } elsif ($state == $STATE_GUARD_START) { if (/^$/) { &mistake("$file: too many blank lines after copyright header"); - } elsif(/#pragma once/) { - $state = $STATE_PRAGMA; - } elsif (/#ifndef $ifdef$/) { - $state = $STATE_GUARD_DEFINE; + } + if ($publicheader) { + if (/#ifndef $ifdef$/) { + $state = $STATE_GUARD_DEFINE; + } else { + &mistake("$file: missing '#ifndef $ifdef'"); + } } else { - &mistake("$file: missing '#ifndef $ifdef'"); + if(/#pragma once/) {
Missing space ^ Otherwise looks good. Jano
+ $state = $STATE_PRAGMA; + } else { + &mistake("$file: missing '#pragma once' header guard"); + } } } elsif ($state == $STATE_GUARD_DEFINE) { if (/# define $ifdef$/) { -- 2.20.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list
Attachment:
signature.asc
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list