# New Ticket Created by  Mark Glines 
# Please include the string:  [perl #42903]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=42903 >


Hi,

The attached patch adds a bullet to PDD07 about headerfile guards, and
adds a test to c/codingstd/ to check for existence, uniqueness, and
lack of conflicting names.  Then it fixes up all headers returned by
Parrot::Distribution->c_header_files(), to pass the tests.

(Are there any headers hiding here and there that Parrot::Distribution
doesn't know about?)

As a special case, the test ignores bison-generated headers, which do
not include guards.  It might be useful to try to convince bison to emit
some, or postprocess bison's output with perl, to add a guard header and
footer.

Mark
Index: docs/pdds/pdd07_codingstd.pod
===================================================================
--- docs/pdds/pdd07_codingstd.pod	(revision 18452)
+++ docs/pdds/pdd07_codingstd.pod	(working copy)
@@ -254,6 +254,26 @@
 Variable names must be included for all function parameters in the function
 declarations.
 
+=item *
+
+Header files must be wrapped with guard macros, which must have a PARROT_,
+followed by some unique and descriptive text identifying the header file, and
+be followed with a _GUARD suffix.  The matching #endif must have the guard
+macro name in a comment, to prevent confusion.  For example, a file named
+parrot/foo.h might look like:
+
+    #ifndef PARROT_FOO_H_GUARD
+    #define PARROT_FOO_H_GUARD
+    
+    #include "parrot/config.h"
+    #ifdef PARROT_HAS_FEATURE_FOO
+    typedef struct foo {
+    	...
+    } foo_t;
+    #endif /* PARROT_HAS_FEATURE_FOO */
+   
+    #endif /* PARROT_FOO_H_GUARD */
+
 =back
 
 
Index: t/codingstd/c_header_guards.t
===================================================================
--- t/codingstd/c_header_guards.t	(revision 0)
+++ t/codingstd/c_header_guards.t	(revision 0)
@@ -0,0 +1,122 @@
+#! perl
+# Copyright (C) 2006-2007, The Perl Foundation.
+# $Id$
+
+use strict;
+use warnings;
+
+use lib qw( . lib ../lib ../../lib );
+use Test::More tests => 5;
+use Parrot::Distribution;
+
+=head1 NAME
+
+t/codingstd/c_header_guards.t - checks for rules related to guards in C header files
+
+=head1 SYNOPSIS
+
+    # test all files
+    % prove t/codingstd/c_header_guards.t
+
+    # test specific files
+    % perl t/codingstd/c_header_guards.t include/parrot/bar.h
+
+=head1 DESCRIPTION
+
+Checks that all C language header files have an #ifndef PARROT_WHATEVER_H_GUARD definition,
+and an #endif /* PARROT_WHATEVER_H_GUARD */ at the end, as specified in PDD07.
+
+=head1 SEE ALSO
+
+L<docs/pdds/pdd07_codingstd.pod>
+
+=cut
+
+my $DIST = Parrot::Distribution->new();
+my @files = @ARGV ? @ARGV : map { $_->path() } $DIST->c_header_files();
+
+#foreach my $file ( @files ) {
+#    print $file, "\n";
+#}
+#exit;
+
+check_header_guards(@files);
+
+exit;
+
+sub check_header_guards {
+    my (%guardnames, %redundants, %collisions,
+        %missing_guard, %missing_define, %missing_comment);
+
+F:  foreach my $file (@_) {
+        open my $fh, '<', $file
+            or die "Can not open '$file' for reading!\n";
+        my @source = <$fh>;
+        close $fh;
+        chomp @source;
+
+        my ($ifndef, $define, $endif);
+L:          foreach my $line (@source) {
+            $line =~ s/\s+/ /;
+            $line =~ s/^ //;
+
+            # skip Bison parser files
+            next F if $line =~ /A Bison parser/;
+
+            # skip the non-preprocessor lines
+            next L unless substr($line,0,1) eq '#';
+
+            # skip the "#", and any leading whitespace
+            $line = substr($line, 1);
+            $line =~ s/^ //;
+
+            if($line =~ m[ifndef (PARROT_.+_GUARD)$]) {
+                # check for multiple guards in the same file
+                $redundants{$file} = $1 if defined $ifndef;
+                # check for the same guard-name in multiple files
+                $collisions{$file} = $guardnames{$1}
+                    if exists $guardnames{1};
+
+                $ifndef = $1;
+                $guardnames{$1} = $file;
+            }
+
+            if($line =~ m[define (PARROT_.+_GUARD)$]) {
+                $define = $1
+                    if(defined($ifndef) && $ifndef eq $1);
+            }
+
+            if($line =~ m[endif /\* (PARROT_.+_GUARD) \*/$]) {
+                $endif = $1
+                    if(defined($ifndef) && $ifndef eq $1);
+            }
+        }
+        
+        $missing_guard{$file}   = 1 unless defined $ifndef;
+        $missing_define{$file}  = 1 unless defined $define;
+        $missing_comment{$file} = 1 unless defined $endif;
+    }
+    ok(!(scalar %collisions), "identical PARROT_*_GUARD macro names used in headers");
+    diag("collisions: " . join(", ", %collisions))
+        if scalar keys %collisions;
+    ok(!(scalar %redundants), "multiple PARROT_*_GUARD macros found in headers");
+    diag("redundants: " . join(", ", keys %redundants))
+        if scalar keys %redundants;
+    ok(!(scalar %missing_guard), "missing or misspelled PARROT_*_GUARD ifndef in headers");
+    diag("missing guard: " . join(", ", sort keys %missing_guard))
+        if scalar keys %missing_guard;
+    ok(!(scalar %missing_define), "missing or misspelled PARROT_*_GUARD define in headers");
+    diag("missing define: " . join(", ", sort keys %missing_define))
+        if scalar keys %missing_define;
+    ok(!(scalar %missing_comment), "missing or misspelled PARROT_*_GUARD comment after the #endif in headers");
+    diag("missing endif comment: " . join(", ", sort keys %missing_comment))
+        if scalar keys %missing_comment;
+}
+return 0;
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Index: compilers/bcg/src/bcg_utils.h
===================================================================
--- compilers/bcg/src/bcg_utils.h	(revision 18452)
+++ compilers/bcg/src/bcg_utils.h	(working copy)
@@ -1,5 +1,5 @@
-#ifndef PARROT_BCG_UTILS_H
-#  define PARROT_BCG_UTILS_H
+#ifndef PARROT_BCG_UTILS_H_GUARD
+#define PARROT_BCG_UTILS_H_GUARD
 
 #  include "bcg.h"
 
@@ -12,7 +12,7 @@
                   void *value);
 void *bcg_hash_get(BCG_info * bcg_info, bcg_hash * hash, char *key);
 
-#endif /* PARROT_BCG_UTILS_H */
+#endif /* PARROT_BCG_UTILS_H_GUARD */
 
 /*
  * Local variables:
Index: compilers/pirc/src/jsonout.h
===================================================================
--- compilers/pirc/src/jsonout.h	(revision 18452)
+++ compilers/pirc/src/jsonout.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_JSONOUT_H_GUARD
-#  define PARROT_PIRC_JSONOUT_H_GUARD
+#define PARROT_PIRC_JSONOUT_H_GUARD
 
 /* predeclare */
 struct pirvtable;
Index: compilers/pirc/src/pastout.h
===================================================================
--- compilers/pirc/src/pastout.h	(revision 18452)
+++ compilers/pirc/src/pastout.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PASTOUT_H_GUARD
-#  define PARROT_PIRC_PASTOUT_H_GUARD
+#define PARROT_PIRC_PASTOUT_H_GUARD
 
 /* predeclare */
 struct pirvtable;
Index: compilers/pirc/src/pbcout.h
===================================================================
--- compilers/pirc/src/pbcout.h	(revision 18452)
+++ compilers/pirc/src/pbcout.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PBCOUT_H_GUARD
-#  define PARROT_PIRC_PBCOUT_H_GUARD
+#define PARROT_PIRC_PBCOUT_H_GUARD
 
 
 extern struct pirvtable *init_pbc_vtable(char *outputfile);
Index: compilers/pirc/src/pirlexer.h
===================================================================
--- compilers/pirc/src/pirlexer.h	(revision 18452)
+++ compilers/pirc/src/pirlexer.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PIRLEXER_H_GUARD
-#  define PARROT_PIRC_PIRLEXER_H_GUARD
+#define PARROT_PIRC_PIRLEXER_H_GUARD
 
 typedef enum tokens {
     T_GLOBAL,                           /* "global"                   */
Index: compilers/pirc/src/pirout.h
===================================================================
--- compilers/pirc/src/pirout.h	(revision 18452)
+++ compilers/pirc/src/pirout.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PIROUT_H_GUARD
-#  define PARROT_PIRC_PIROUT_H_GUARD
+#define PARROT_PIRC_PIROUT_H_GUARD
 
 /* predeclare */
 struct pirvtable;
Index: compilers/pirc/src/pirparser.h
===================================================================
--- compilers/pirc/src/pirparser.h	(revision 18452)
+++ compilers/pirc/src/pirparser.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PIRPARSER_H_GUARD
-#  define PARROT_PIRC_PIRPARSER_H_GUARD
+#define PARROT_PIRC_PIRPARSER_H_GUARD
 
 #  include "pirlexer.h"
 #  include "pirvtable.h"
Index: compilers/pirc/src/pirutil.h
===================================================================
--- compilers/pirc/src/pirutil.h	(revision 18452)
+++ compilers/pirc/src/pirutil.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PIRUTIL_H_GUARD
-#  define PARROT_PIRC_PIRUTIL_H_GUARD
+#define PARROT_PIRC_PIRUTIL_H_GUARD
 
 
 #  include <stdio.h>
Index: compilers/pirc/src/pirvtable.h
===================================================================
--- compilers/pirc/src/pirvtable.h	(revision 18452)
+++ compilers/pirc/src/pirvtable.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_PIRC_PIRVTABLE_H_GUARD
-#  define PARROT_PIRC_PIRVTABLE_H_GUARD
+#define PARROT_PIRC_PIRVTABLE_H_GUARD
 
 /* predeclaration; the actual definition is left to the back-end(s) */
 struct emit_data;
Index: config/gen/platform/ansi/io.h
===================================================================
--- config/gen/platform/ansi/io.h	(revision 18452)
+++ config/gen/platform/ansi/io.h	(working copy)
@@ -2,11 +2,16 @@
 ** I/O:
 */
 
+#ifndef PARROT_PLATFORM_ANSI_IO_H_GUARD
+#define PARROT_PLATFORM_ANSI_IO_H_GUARD
+
 #define DEFAULT_OPEN_MODE 0
 #ifndef S_ISREG
 #  define S_ISREG(m) 1
 #endif
 
+#endif /* PARROT_PLATFORM_ANSI_IO_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/dl.h
===================================================================
--- config/gen/platform/generic/dl.h	(revision 18452)
+++ config/gen/platform/generic/dl.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_DL_H_GUARD
+#define PARROT_PLATFORM_GENERIC_DL_H_GUARD
 /*
  * Dynamic loading stuff:
  */
@@ -4,6 +6,8 @@
 
 #define PARROT_DLOPEN_FLAGS RTLD_LAZY
 
+#endif /* PARROT_PLATFORM_GENERIC_DL_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/io.h
===================================================================
--- config/gen/platform/generic/io.h	(revision 18452)
+++ config/gen/platform/generic/io.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_IO_H_GUARD
+#define PARROT_PLATFORM_GENERIC_IO_H_GUARD
 /*
  * I/O:
  */
@@ -7,6 +9,8 @@
 #  define S_ISREG(m) ((m & S_IFMT) == S_IFREG)
 #endif
 
+#endif /* PARROT_PLATFORM_GENERIC_IO_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/math.h
===================================================================
--- config/gen/platform/generic/math.h	(revision 18452)
+++ config/gen/platform/generic/math.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_MATH_H_GUARD
+#define PARROT_PLATFORM_GENERIC_MATH_H_GUARD
 /*
  * math related stuff
  */
@@ -20,6 +22,8 @@
 
 #define Parrot_is_nzero(x) ((x) == 0.0 && signbit(x))
 
+#endif /* PARROT_PLATFORM_GENERIC_MATH_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/signal.h
===================================================================
--- config/gen/platform/generic/signal.h	(revision 18452)
+++ config/gen/platform/generic/signal.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_SIGNAL_H_GUARD
+#define PARROT_PLATFORM_GENERIC_SIGNAL_H_GUARD
 /*
  * Signal handling stuff
  */
@@ -19,6 +21,8 @@
     Parrot_sighandler_t Parrot_set_sighandler(int s, Parrot_sighandler_t f);
 #endif
 
+#endif /* PARROT_PLATFORM_GENERIC_SIGNAL_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/stat.h
===================================================================
--- config/gen/platform/generic/stat.h	(revision 18452)
+++ config/gen/platform/generic/stat.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_STAT_H_GUARD
+#define PARROT_PLATFORM_GENERIC_STAT_H_GUARD
 /*
  * File stat stuff
  */
@@ -6,6 +8,8 @@
 #  include <sys/stat.h>
 #endif
 
+#endif /* PARROT_PLATFORM_GENERIC_STAT_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/generic/threads.h
===================================================================
--- config/gen/platform/generic/threads.h	(revision 18452)
+++ config/gen/platform/generic/threads.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_GENERIC_THREADS_H_GUARD
+#define PARROT_PLATFORM_GENERIC_THREADS_H_GUARD
 /*
  * POSIX threading stuff
  */
@@ -13,6 +15,8 @@
 #  endif
 #endif
 
+#endif /* PARROT_PLATFORM_GENERIC_THREADS_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/openbsd/misc.h
===================================================================
--- config/gen/platform/openbsd/misc.h	(revision 18452)
+++ config/gen/platform/openbsd/misc.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_PLATFORM_OPENBSD_MISC_H_GUARD
+#define PARROT_PLATFORM_OPENBSD_MISC_H_GUARD
 /*
 ** Miscellaneous:
 */
@@ -8,6 +10,8 @@
 #  define PARROT_OPENBSD_ELF
 #endif
 
+#endif /* PARROT_PLATFORM_OPENBSD_MISC_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/platform_interface.h
===================================================================
--- config/gen/platform/platform_interface.h	(revision 18452)
+++ config/gen/platform/platform_interface.h	(working copy)
@@ -1,5 +1,5 @@
-#ifndef PLATFORM_INTERFACE_H_GUARD
-#define PLATFORM_INTERFACE_H_GUARD
+#ifndef PARROT_PLATFORM_INTERFACE_H_GUARD
+#define PARROT_PLATFORM_INTERFACE_H_GUARD
 /*
 ** platform_interface.h
 */
@@ -126,7 +126,7 @@
 INTVAL Parrot_Run_OS_Command_Argv(Interp*, struct PMC *);
 void Parrot_Exec_OS_Command_Argv(Interp*, struct PMC *);
 
-#endif /* PLATFORM_INTERFACE_H_GUARD */
+#endif /* PARROT_PLATFORM_INTERFACE_H_GUARD */
 
 /*
  * Local variables:
Index: config/gen/platform/win32/io.h
===================================================================
--- config/gen/platform/win32/io.h	(revision 18452)
+++ config/gen/platform/win32/io.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_PLATFORM_WIN32_IO_H_GUARD
+#define PARROT_PLATFORM_WIN32_IO_H_GUARD
+
 #define DEFAULT_OPEN_MODE 0
 
 typedef void* Parrot_WIN32_HANDLE;
@@ -7,6 +10,8 @@
 #  define S_ISREG(m) ((m & S_IFMT) == S_IFREG)
 #endif
 
+#endif /* PARROT_PLATFORM_WIN32_IO_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/win32/misc.h
===================================================================
--- config/gen/platform/win32/misc.h	(revision 18452)
+++ config/gen/platform/win32/misc.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_PLATFORM_WIN32_MISC_H_GUARD
+#define PARROT_PLATFORM_WIN32_MISC_H_GUARD
+
 #define PARROT_HAS_PLATFORM_INIT_CODE
 
 void Parrot_platform_init_code(void);
@@ -13,6 +16,8 @@
                                   * been removed' warnings in header files */
 #endif /* defined(_MSC_VER) */
 
+#endif /* PARROT_PLATFORM_WIN32_MISC_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/win32/signal.h
===================================================================
--- config/gen/platform/win32/signal.h	(revision 18452)
+++ config/gen/platform/win32/signal.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_PLATFORM_WIN32_SIGNAL_H_GUARD
+#define PARROT_PLATFORM_WIN32_SIGNAL_H_GUARD
+
 /*
  * empty to prevent inclusion of generic/signal.h
  */
@@ -2,2 +5,4 @@
 
+#endif /* PARROT_PLATFORM_WIN32_SIGNAL_H_GUARD */
+
 /*
Index: config/gen/platform/win32/stat.h
===================================================================
--- config/gen/platform/win32/stat.h	(revision 18452)
+++ config/gen/platform/win32/stat.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_PLATFORM_WIN32_STAT_H_GUARD
+#define PARROT_PLATFORM_WIN32_STAT_H_GUARD
+
 #ifndef S_IFMT
 #  ifdef _S_IFMT
 #    define S_IFMT _S_IFMT
@@ -22,6 +25,8 @@
 #  define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
 #endif
 
+#endif /* PARROT_PLATFORM_WIN32_STAT_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: config/gen/platform/win32/threads.h
===================================================================
--- config/gen/platform/win32/threads.h	(revision 18452)
+++ config/gen/platform/win32/threads.h	(working copy)
@@ -1,6 +1,9 @@
+#ifndef PARROT_PLATFORM_WIN32_THREADS_H_GUARD
+#define PARROT_PLATFORM_WIN32_THREADS_H_GUARD
 
 #include "parrot/thr_windows.h"
 
+#endif /* PARROT_PLATFORM_WIN32_THREADS_H_GUARD */
 
 /*
  * Local variables:
Index: include/parrot/atomic/fallback.h
===================================================================
--- include/parrot/atomic/fallback.h	(revision 18452)
+++ include/parrot/atomic/fallback.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_ATOMIC_FALLBACK_H_GUARD
-#  define PARROT_ATOMIC_FALLBACK_H_GUARD
+#define PARROT_ATOMIC_FALLBACK_H_GUARD
 
 typedef struct Parrot_atomic_pointer {
     void *val;
Index: include/parrot/atomic/gcc_pcc.h
===================================================================
--- include/parrot/atomic/gcc_pcc.h	(revision 18452)
+++ include/parrot/atomic/gcc_pcc.h	(working copy)
@@ -12,8 +12,8 @@
  *  References:
  */
 
-#ifndef ATOMIC_GCC_PCC_H_GUARD
-#  define ATOMIC_GCC_PCC_H_GUARD
+#ifndef PARROT_ATOMIC_GCC_PCC_H_GUARD
+#define PARROT_ATOMIC_GCC_PCC_H_GUARD
 
 typedef struct Parrot_atomic_pointer {
     void * volatile val;
@@ -115,7 +115,7 @@
         result = parrot_ppc_add(&(a).val, -1); \
     } while (0)
 
-#endif /* ATOMIC_GCC_PCC_H_GUARD */
+#endif /* PARROT_ATOMIC_GCC_PCC_H_GUARD */
 
 /*
  * Local variables:
Index: include/parrot/atomic.h
===================================================================
--- include/parrot/atomic.h	(revision 18452)
+++ include/parrot/atomic.h	(working copy)
@@ -12,7 +12,7 @@
 
 
 #ifndef PARROT_ATOMIC_H_GUARD
-#  define PARROT_ATOMIC_H_GUARD
+#define PARROT_ATOMIC_H_GUARD
 
 #  include "parrot/has_header.h"
 #  include "parrot/thread.h"
Index: include/parrot/atomic/sparc.h
===================================================================
--- include/parrot/atomic/sparc.h	(revision 18452)
+++ include/parrot/atomic/sparc.h	(working copy)
@@ -12,8 +12,8 @@
  *  References:
  */
 
-#ifndef ATOMIC_SPARC_H_GUARD
-#define ATOMIC_SPARC_H_GUARD
+#ifndef PARROT_ATOMIC_SPARC_H_GUARD
+#define PARROT_ATOMIC_SPARC_H_GUARD
 
 extern int parrot_sparc_cas32(Parrot_UInt4 *value, Parrot_UInt4 old, Parrot_UInt4 new);
 /* NB cas64 _will_ be broken when PTR_SIZE == 4 */
@@ -83,7 +83,7 @@
 #define PARROT_ATOMIC_INT_DEC(result, a) parrot_sparc_atomic_int_add(result, a, -1)
 #define PARROT_ATOMIC_INT_INC(result, a) parrot_sparc_atomic_int_add(result, a,  1)
 
-#endif /* ATOMIC_SPARC_H_GUARD */
+#endif /* PARROT_ATOMIC_SPARC_H_GUARD */
 
 /*
  * Local variables:
Index: include/parrot/exec.h
===================================================================
--- include/parrot/exec.h	(revision 18452)
+++ include/parrot/exec.h	(working copy)
@@ -11,9 +11,10 @@
  * References:
  */
 
+#ifndef PARROT_EXEC_H_GUARD
+#define PARROT_EXEC_H_GUARD
+
 #if EXEC_CAPABLE
-#  if !defined(PARROT_EXEC_H_GUARD)
-#  define PARROT_EXEC_H_GUARD
 
 #  if PARROT_EXEC_OS_OPENBSD
 #    ifdef PARROT_OPENBSD_ELF
@@ -113,9 +114,10 @@
 void Parrot_exec_emit_mov_rm_n(Interp *interp, int reg, char *mem);
 /* HEADERIZER END: src/exec.c */
 
-#endif /* PARROT_EXEC_H_GUARD */
 #endif /* EXEC_CAPABLE */
 
+#endif /* PARROT_EXEC_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: include/parrot/smallobject.h
===================================================================
--- include/parrot/smallobject.h	(revision 18452)
+++ include/parrot/smallobject.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_SMALLOBJECT_H_GUARD
-#  define PARROT_SMALLOBJECT_H_GUARD
+#define PARROT_SMALLOBJECT_H_GUARD
 
 #  include "parrot/parrot.h"
 
Index: include/parrot/stat.h
===================================================================
--- include/parrot/stat.h	(revision 18452)
+++ include/parrot/stat.h	(working copy)
@@ -45,7 +45,7 @@
 PARROT_API INTVAL Parrot_fstat_info_intval(Parrot_Interp, INTVAL, INTVAL);
 PARROT_API FLOATVAL Parrot_stat_info_floatval(Parrot_Interp, STRING *, INTVAL);
 
-#endif /* PARROT_STRING_H_GUARD */
+#endif /* PARROT_STAT_H_GUARD */
 
 /*
  * Local variables:
Index: include/parrot/stm/backend.h
===================================================================
--- include/parrot/stm/backend.h	(revision 18452)
+++ include/parrot/stm/backend.h	(working copy)
@@ -1,5 +1,5 @@
 #ifndef PARROT_STM_BACKEND_H_GUARD
-#  define PARROT_STM_BACKEND_H_GUARD
+#define PARROT_STM_BACKEND_H_GUARD
 
 #  include <parrot/parrot.h>
 
Index: include/parrot/thread.h
===================================================================
--- include/parrot/thread.h	(revision 18452)
+++ include/parrot/thread.h	(working copy)
@@ -11,7 +11,7 @@
  */
 
 #ifndef PARROT_THREAD_H_GUARD
-#  define PARROT_THREAD_H_GUARD
+#define PARROT_THREAD_H_GUARD
 
 #  include "parrot/parrot.h"
 
Index: include/parrot/thr_windows.h
===================================================================
--- include/parrot/thr_windows.h	(revision 18452)
+++ include/parrot/thr_windows.h	(working copy)
@@ -11,7 +11,7 @@
  */
 
 #ifndef PARROT_THR_WINDOWS_H_GUARD
-#  define PARROT_THR_WINDOWS_H_GUARD
+#define PARROT_THR_WINDOWS_H_GUARD
 
 #  undef CONST
 #  include <windows.h>
Index: languages/cola/cola.h
===================================================================
--- languages/cola/cola.h	(revision 18452)
+++ languages/cola/cola.h	(working copy)
@@ -9,7 +9,7 @@
  */
 
 #ifndef PARROT_LANGUAGES_COLA_H_GUARD
-#  define PARROT_LANGUAGES_COLA_H_GUARD
+#define PARROT_LANGUAGES_COLA_H_GUARD
 
 #  define COLA_VERSION "0.0.11.1"
 
Index: languages/dotnet/pmc/structures.h
===================================================================
--- languages/dotnet/pmc/structures.h	(revision 18452)
+++ languages/dotnet/pmc/structures.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_DOTNET_PMC_STRUCTURES_H_GUARD
+#define PARROT_DOTNET_PMC_STRUCTURES_H_GUARD
+
 /* Some structures relating to the .NET CLI files and metadata PMCs. */
 
 /* This structure describes a loaded .NET assembly. */
@@ -268,6 +271,8 @@
     UHUGEINTVAL x;
 };
 
+#endif /* PARROT_DOTNET_PMC_STRUCTURES_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: languages/dotnet/pmc/tableinfo.h
===================================================================
--- languages/dotnet/pmc/tableinfo.h	(revision 18452)
+++ languages/dotnet/pmc/tableinfo.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_DOTNET_PMC_TABLEINFO_H_GUARD
+#define PARROT_DOTNET_PMC_TABLEINFO_H_GUARD
+
 /* Metadata table information. */
 
 /* Table name => number mappings */
@@ -200,6 +203,7 @@
 
 #define Table_TypeSpec_RL(ass)          (ass->blobs_ptr_size)
 
+#endif /* PARROT_DOTNET_PMC_TABLEINFO_H_GUARD */
 
 /*
  * Local variables:
Index: languages/tcl/src/binary.h
===================================================================
--- languages/tcl/src/binary.h	(revision 18452)
+++ languages/tcl/src/binary.h	(working copy)
@@ -1,3 +1,5 @@
+#ifndef PARROT_TCL_BINARY_H_GUARD
+#define PARROT_TCL_BINARY_H_GUARD
 
 PMC *ParTcl_binary_scan(Interp *interp, STRING *BINSTR, STRING *FORMAT);
 STRING *ParTcl_binary_format(Interp *interp, STRING *FORMAT, PMC *values);
@@ -2,2 +4,4 @@
 
+#endif /* PARROT_TCL_BINARY_H_GUARD */
+
 /*
Index: src/exec_save.h
===================================================================
--- src/exec_save.h	(revision 18452)
+++ src/exec_save.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_EXEC_SAVE_H_GUARD
-#  define PARROT_EXEC_SAVE_H_GUARD
+#define PARROT_EXEC_SAVE_H_GUARD
 
 void Parrot_exec_save(Parrot_exec_objfile_t *obj, const char *file);
 
Index: src/interp_guts.h
===================================================================
--- src/interp_guts.h	(revision 18452)
+++ src/interp_guts.h	(working copy)
@@ -3,7 +3,7 @@
 */
 
 #ifndef PARROT_INTERP_GUTS_H_GUARD
-#  define PARROT_INTERP_GUTS_H_GUARD
+#define PARROT_INTERP_GUTS_H_GUARD
 
 #  define DO_OP(PC,INTERP) (PC = ((INTERP->op_func_table)[*PC])(PC,INTERP))
 
Index: src/jit/alpha/jit_emit.h
===================================================================
--- src/jit/alpha/jit_emit.h	(revision 18452)
+++ src/jit/alpha/jit_emit.h	(working copy)
@@ -34,7 +34,7 @@
  */
 
 #ifndef PARROT_ALPHA_JIT_EMIT_H_GUARD
-#  define PARROT_ALPHA_JIT_EMIT_H_GUARD
+#define PARROT_ALPHA_JIT_EMIT_H_GUARD
 
 typedef enum {
     REG0_v0,
Index: src/jit/arm/exec_dep.h
===================================================================
--- src/jit/arm/exec_dep.h	(revision 18452)
+++ src/jit/arm/exec_dep.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_ARM_EXEC_DEP_H_GUARD
-#  define PARROT_ARM_EXEC_DEP_H_GUARD
+#define PARROT_ARM_EXEC_DEP_H_GUARD
 
 #ifdef JIT_CGP
 
Index: src/jit/arm/jit_emit.h
===================================================================
--- src/jit/arm/jit_emit.h	(revision 18452)
+++ src/jit/arm/jit_emit.h	(working copy)
@@ -6,8 +6,8 @@
  * $Id$
  */
 
-#if !defined(PARROT_ARM_JIT_EMIT_H_GUARD)
-#  define PARROT_ARM_JIT_EMIT_H_GUARD
+#ifndef PARROT_ARM_JIT_EMIT_H_GUARD
+#define PARROT_ARM_JIT_EMIT_H_GUARD
 
 #ifdef ARM
 #  ifdef __linux
Index: src/jit/i386/exec_dep.h
===================================================================
--- src/jit/i386/exec_dep.h	(revision 18452)
+++ src/jit/i386/exec_dep.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_I386_EXEC_DEP_H_GUARD
-#  define PARROT_I386_EXEC_DEP_H_GUARD
+#define PARROT_I386_EXEC_DEP_H_GUARD
 
 #ifdef JIT_CGP
 
Index: src/jit/i386/jit_emit.h
===================================================================
--- src/jit/i386/jit_emit.h	(revision 18452)
+++ src/jit/i386/jit_emit.h	(working copy)
@@ -7,7 +7,7 @@
  */
 
 #ifndef PARROT_I386_JIT_EMIT_H_GUARD
-#  define PARROT_I386_JIT_EMIT_H_GUARD
+#define PARROT_I386_JIT_EMIT_H_GUARD
 
 #  include <assert.h>
 
Index: src/jit/ia64/jit_emit.h
===================================================================
--- src/jit/ia64/jit_emit.h	(revision 18452)
+++ src/jit/ia64/jit_emit.h	(working copy)
@@ -1,3 +1,6 @@
+#ifndef PARROT_JIT_IA64_JIT_EMIT_H_GUARD
+#define PARROT_JIT_IA64_JIT_EMIT_H_GUARD
+
 /*
  * jit_emit.h
  *
@@ -768,6 +771,8 @@
 
 #endif /* !JIT_EMIT */
 
+#endif /* PARROT_JIT_IA64_JIT_EMIT_H_GUARD */
+
 /*
  * Local variables:
  *   c-file-style: "parrot"
Index: src/jit/mips/jit_emit.h
===================================================================
--- src/jit/mips/jit_emit.h	(revision 18452)
+++ src/jit/mips/jit_emit.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_MIPS_JIT_EMIT_H_GUARD
-#  define PARROT_MIPS_JIT_EMIT_H_GUARD
+#define PARROT_MIPS_JIT_EMIT_H_GUARD
 
 #  define BASE_REG s0
 #  define Parrot_jit_emit_get_base_reg_no(pc) BASE_REG
Index: src/jit/ppc/exec_dep.h
===================================================================
--- src/jit/ppc/exec_dep.h	(revision 18452)
+++ src/jit/ppc/exec_dep.h	(working copy)
@@ -12,7 +12,7 @@
  */
 
 #ifndef PARROT_PPC_EXEC_DEP_H_GUARD
-#  define PARROT_PPC_EXEC_DEP_H_GUARD
+#define PARROT_PPC_EXEC_DEP_H_GUARD
 
 #ifdef JIT_CGP
 
Index: src/jit/ppc/jit_emit.h
===================================================================
--- src/jit/ppc/jit_emit.h	(revision 18452)
+++ src/jit/ppc/jit_emit.h	(working copy)
@@ -7,7 +7,7 @@
  */
 
 #ifndef PARROT_PPC_JIT_EMIT_H_GUARD
-#  define PARROT_PPC_JIT_EMIT_H_GUARD
+#define PARROT_PPC_JIT_EMIT_H_GUARD
 
 #  include <unistd.h>
 #  include <sys/mman.h>
Index: src/jit/skeleton/jit_emit.h
===================================================================
--- src/jit/skeleton/jit_emit.h	(revision 18452)
+++ src/jit/skeleton/jit_emit.h	(working copy)
@@ -7,7 +7,7 @@
  */
 
 #ifndef PARROT_PPC_JIT_EMIT_H_GUARD
-#  define PARROT_PPC_JIT_EMIT_H_GUARD
+#define PARROT_PPC_JIT_EMIT_H_GUARD
 
 #  include <unistd.h>
 #  include <limits.h>
Index: src/jit/sun4/jit_emit.h
===================================================================
--- src/jit/sun4/jit_emit.h	(revision 18452)
+++ src/jit/sun4/jit_emit.h	(working copy)
@@ -7,7 +7,7 @@
 **/
 
 #ifndef PARROT_SUN4_JIT_EMIT_H_GUARD
-#  define PARROT_SUN4_JIT_EMIT_H_GUARD
+#define PARROT_SUN4_JIT_EMIT_H_GUARD
 
 /*
  * SPARC JIT overview:
Index: src/pmc/classobject.h
===================================================================
--- src/pmc/classobject.h	(revision 18452)
+++ src/pmc/classobject.h	(working copy)
@@ -8,7 +8,7 @@
 */
 
 #ifndef PARROT_CLASSOBJECT_H_GUARD
-#  define PARROT_CLASSOBJECT_GUARD
+#define PARROT_CLASSOBJECT_H_GUARD
 
 /* Class PMC's underlying struct. */
 typedef struct Parrot_Class {
@@ -42,7 +42,7 @@
 /* Fully qualified class name generation; defined in Class, used by Object. */
 STRING* Parrot_Class_get_fq_classname(Parrot_Interp interp, Parrot_Class *class_info);
 
-#endif /* PARROT_CLASSOBJECT_GUARD */
+#endif /* PARROT_CLASSOBJECT_H_GUARD */
 
 
 /*
Index: src/trace.h
===================================================================
--- src/trace.h	(revision 18452)
+++ src/trace.h	(working copy)
@@ -11,7 +11,7 @@
  */
 
 #ifndef PARROT_TRACE_H_GUARD
-#  define PARROT_TRACE_H_GUARD
+#define PARROT_TRACE_H_GUARD
 
 #include "parrot/parrot.h"
 

Reply via email to