Re: [PATCH 46/46] syntax check: update header guard check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux