From 787dfac69b2f65ea8cb7f2498d1e5d974b57e1ee Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sat, 11 Jun 2005 18:52:37 +0000 Subject: [PATCH] make whitespace checker handle non-C too. svn:r4412 --- Makefile.am | 2 +- contrib/checkSpace.pl | 96 +++++++++++++++++++++++-------------------- 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/Makefile.am b/Makefile.am index 184a9d11dd..49c910dcff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,7 +51,7 @@ doxygen: # Avoid strlcpy.c, strlcat.c, tree.h check-spaces: - ./contrib/checkSpace.pl \ + ./contrib/checkSpace.pl -C \ src/common/*.h \ src/common/[^s]*.c \ src/or/[^t]*.[ch] src/or/t*.c diff --git a/contrib/checkSpace.pl b/contrib/checkSpace.pl index 3b6c6f54d3..f001450ec7 100755 --- a/contrib/checkSpace.pl +++ b/contrib/checkSpace.pl @@ -1,5 +1,11 @@ #!/usr/bin/perl -w +if ($ARGV[0] =~ /^-/) { + $lang = shift @ARGV; + $C = ($lang eq '-C'); +# $TXT = ($lang eq '-txt'); +} + for $fn (@ARGV) { open(F, "$fn"); $lastnil = 0; @@ -18,7 +24,7 @@ for $fn (@ARGV) { print "Space\@EOL:$fn:$.\n"; } ## Warn about control keywords without following space. - if (/\s(?:if|while|for|switch)\(/) { + if ($C && /\s(?:if|while|for|switch)\(/) { print " KW(:$fn:$.\n"; } ## Warn about multiple empty lines. @@ -31,49 +37,51 @@ for $fn (@ARGV) { } ### Juju to skip over comments and strings, since the tests ### we're about to do are okay there. - if ($incomment) { - if (m!\*/!) { - s!.*?\*/!!; - $incomment = 0; - } else { - next; - } - } - if (m!/\*.*?\*/!) { - s!\s*/\*.*?\*/!!; - } elsif (m!/\*!) { - s!\s*/\*!!; - $incomment = 1; - next; - } - s!"(?:[^\"]+|\\.)*"!"X"!g; - next if /^\#/; - ## Warn about C++-style comments. - if (m!//!) { - # print " //:$fn:$.\n"; - s!//.*!!; - } - ## Warn about braces preceded by non-space. - if (/([^\s])\{/) { - print " $1\{:$fn:$.\n"; - } - ## Warn about multiple internal spaces. - #if (/[^\s,:]\s{2,}[^\s\\=]/) { - # print " X X:$fn:$.\n"; - #} - ## Warn about { with stuff after. - #s/\s+$//; - #if (/\{[^\}\\]+$/) { - # print " {X:$fn:$.\n"; - #} - ## Warn about function calls with space before parens. - if (/(\w+)\s\(/) { - if ($1 ne "if" and $1 ne "while" and $1 ne "for" and - $1 ne "switch" and $1 ne "return" and $1 ne "int" and - $1 ne "void" and $1 ne "__attribute__") { - print " fn ():$fn:$.\n"; - } - } + if ($C) { + if ($incomment) { + if (m!\*/!) { + s!.*?\*/!!; + $incomment = 0; + } else { + next; + } + } + if (m!/\*.*?\*/!) { + s!\s*/\*.*?\*/!!; + } elsif (m!/\*!) { + s!\s*/\*!!; + $incomment = 1; + next; + } + s!"(?:[^\"]+|\\.)*"!"X"!g; + next if /^\#/; + ## Warn about C++-style comments. + if (m!//!) { + # print " //:$fn:$.\n"; + s!//.*!!; + } + ## Warn about braces preceded by non-space. + if (/([^\s])\{/) { + print " $1\{:$fn:$.\n"; + } + ## Warn about multiple internal spaces. + #if (/[^\s,:]\s{2,}[^\s\\=]/) { + # print " X X:$fn:$.\n"; + #} + ## Warn about { with stuff after. + #s/\s+$//; + #if (/\{[^\}\\]+$/) { + # print " {X:$fn:$.\n"; + #} + ## Warn about function calls with space before parens. + if (/(\w+)\s\(/) { + if ($1 ne "if" and $1 ne "while" and $1 ne "for" and + $1 ne "switch" and $1 ne "return" and $1 ne "int" and + $1 ne "void" and $1 ne "__attribute__") { + print " fn ():$fn:$.\n"; + } + } + } } if (! $lastnil) { print " EOL\@EOF:$fn:$.\n";