From 093ba4061da68d8c86a09b3631767912ffb183e2 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Sat, 29 Aug 2020 16:07:12 -0400 Subject: Utilities/Scripts: Add temporary #pragma once conversion script --- Utilities/Scripts/pragma-once.pl | 73 ++++++++++++++++++++++++++++++++++++++++ Utilities/Scripts/pragma-once.sh | 21 ++++++++++++ 2 files changed, 94 insertions(+) create mode 100755 Utilities/Scripts/pragma-once.pl create mode 100755 Utilities/Scripts/pragma-once.sh diff --git a/Utilities/Scripts/pragma-once.pl b/Utilities/Scripts/pragma-once.pl new file mode 100755 index 0000000..41162ec --- /dev/null +++ b/Utilities/Scripts/pragma-once.pl @@ -0,0 +1,73 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use constant { + START => 0, + HAVE_IFNDEF => 1, + HAVE_DEFINE => 2, + HAVE_ENDIF => 3, + HAVE_PRAGMA_ONCE => 4, +}; +my $state = START; +my $blank_count = 0; +my $endif = ''; +while (<>) { + if ($state == START) { + if (/^#ifndef [a-zA-Z_][a-zA-Z0-9_]*$/) { + $state = HAVE_IFNDEF; + print "#pragma once\n"; + } else { + if (/^#pragma once$/) { + $state = HAVE_PRAGMA_ONCE; + } + print; + } + } elsif ($state == HAVE_IFNDEF) { + if (/^#define [a-zA-Z_][a-zA-Z0-9_]*$/) { + $blank_count = 0; + $state = HAVE_DEFINE; + } else { + print; + } + } elsif ($state == HAVE_DEFINE) { + if (/^#endif/) { + $endif = $_; + $state = HAVE_ENDIF; + } elsif (/^$/) { + $blank_count++; + } else { + for (my $i = 0; $i < $blank_count; $i++) { + print "\n"; + } + $blank_count = 0; + print; + } + } elsif ($state == HAVE_ENDIF) { + for (my $i = 0; $i < $blank_count; $i++) { + print "\n"; + } + $blank_count = 0; + print $endif; + $state = HAVE_DEFINE; + if (/^#endif/) { + $endif = $_; + $state = HAVE_ENDIF; + } elsif (/^$/) { + $blank_count++; + } else { + print; + } + } elsif ($state == HAVE_PRAGMA_ONCE) { + print; + } + if (eof) { + if ($state != HAVE_ENDIF && $state != HAVE_PRAGMA_ONCE) { + print STDERR "Malformed header file: $ARGV\n"; + exit 1; + } + $state = START; + $blank_count = 0; + } +} diff --git a/Utilities/Scripts/pragma-once.sh b/Utilities/Scripts/pragma-once.sh new file mode 100755 index 0000000..bb6e1a0 --- /dev/null +++ b/Utilities/Scripts/pragma-once.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +files=$(git ls-files \ + 'Source/*.h' \ + 'Source/*.h.in' \ + 'Source/*.hxx' \ + 'Utilities/cm3p/*.h' \ + 'Utilities/cmThirdParty.h.in' \ + 'Utilities/std/cm' \ + 'Utilities/std/cmext' \ + 'Utilities/std/cmSTL.hxx.in' \ + | grep -v '^Source/CPack/cmCPackConfigure\.h\.in$' \ + | grep -v '^Source/cmCPluginAPI\.h$' \ + | grep -v '^Source/cmVersionConfig\.h\.in$' \ + | grep -v '^Source/CursesDialog/form/' \ + | grep -v '^Source/LexerParser/' \ + | grep -v '^Source/kwsys/' \ + | grep -v '\.cxx$' \ +) + +perl -i Utilities/Scripts/pragma-once.pl $files -- cgit v0.12