diff options
-rwxr-xr-x | lib/checksrc.pl | 37 | ||||
-rw-r--r-- | tests/libtest/lib557.c | 1 | ||||
-rw-r--r-- | tests/libtest/test.h | 4 |
3 files changed, 29 insertions, 13 deletions
diff --git a/lib/checksrc.pl b/lib/checksrc.pl index ac7e3847e..bb3495f79 100755 --- a/lib/checksrc.pl +++ b/lib/checksrc.pl @@ -370,7 +370,10 @@ sub scanfile { my $line = 1; my $prevl=""; - my $l; + my $prevpl=""; + my $l = ""; + my $prep = 0; + my $prevp = 0; open(R, "<$file") || die "failed to open $file"; my $incomment=0; @@ -452,6 +455,14 @@ sub scanfile { # comments # ------------------------------------------------------------ + # prev line was a preprocessor **and** ended with a backslash + if($prep && ($prevpl =~ /\\ *\z/)) { + # this is still a preprocessor line + $prep = 1; + goto preproc; + } + $prep = 0; + # crude attempt to detect // comments without too many false # positives if($l =~ /^(([^"\*]*)[^:"]|)\/\//) { @@ -459,6 +470,13 @@ sub scanfile { $line, length($1), $file, $l, "\/\/ comment"); } + # detect and strip preprocessor directives + if($l =~ /^[ \t]*\#/) { + # preprocessor line + $prep = 1; + goto preproc; + } + my $nostr = nostrings($l); # check spaces after for/if/while/function call if($nostr =~ /^(.*)(for|if|while| ([a-zA-Z0-9_]+)) \((.)/) { @@ -676,10 +694,9 @@ sub scanfile { } } - # check for open brace first on line but not first column - # only alert if previous line ended with a close paren and wasn't a cpp - # line - if((($prevl =~ /\)\z/) && ($prevl !~ /^ *#/)) && ($l =~ /^( +)\{/)) { + # check for open brace first on line but not first column only alert + # if previous line ended with a close paren and it wasn't a cpp line + if(($prevl =~ /\)\z/) && ($l =~ /^( +)\{/) && !$prevp) { checkwarn("BRACEPOS", $line, length($1), $file, $ol, "badly placed open brace"); } @@ -687,11 +704,11 @@ sub scanfile { # if the previous line starts with if/while/for AND ends with an open # brace, or an else statement, check that this line is indented $indent # more steps, if not a cpp line - if($prevl =~ /^( *)((if|while|for)\(.*\{|else)\z/) { + if(!$prevp && ($prevl =~ /^( *)((if|while|for)\(.*\{|else)\z/)) { my $first = length($1); # this line has some character besides spaces - if(($l !~ /^ *#/) && ($l =~ /^( *)[^ ]/)) { + if($l =~ /^( *)[^ ]/) { my $second = length($1); my $expect = $first+$indent; if($expect != $second) { @@ -786,9 +803,11 @@ sub scanfile { print STDERR "L: $l\n"; print STDERR "nostr: $nostr\n"; } - + preproc: $line++; - $prevl = $ol; + $prevp = $prep; + $prevl = $ol if(!$prep); + $prevpl = $ol if($prep); } if(!scalar(@copyright)) { diff --git a/tests/libtest/lib557.c b/tests/libtest/lib557.c index b6b8bec1f..c17fab276 100644 --- a/tests/libtest/lib557.c +++ b/tests/libtest/lib557.c @@ -1556,7 +1556,6 @@ static int test_weird_arguments(void) } /* DBL_MAX value from Linux */ -/* !checksrc! disable PLUSNOSPACE 1 */ #define MAXIMIZE -1.7976931348623157081452E+308 static int test_float_formatting(void) diff --git a/tests/libtest/test.h b/tests/libtest/test.h index ffa78d00d..e3bad1748 100644 --- a/tests/libtest/test.h +++ b/tests/libtest/test.h @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -20,8 +20,6 @@ * ***************************************************************************/ -/* !checksrc! disable ASSIGNWITHINCONDITION 14 */ - /* Now include the curl_setup.h file from libcurl's private libdir (the source version, but that might include "curl_config.h" from the build dir so we need both of them in the include path), so that we get good in-depth |