Andy,
Perhaps I'm loosing my magic regex pixie dust, but the dot '.' char
in the pattern "/^.#" in the following lines looks wrong to me, as if
one were trying to match pre-processor directives that were set in by
one character:The command:
grep '^[^#].*\/\^\.#' scripts/checkpatch.pl
displays:
if ($res =~ /^.#\s*include\s+\<(.*)\>/) {
} elsif ($res =~ /^.#\s*(?:error|warning)\s+(.*)\b/) {
if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.#/) {
if ($line =~ /^.#\s*if\s+0\b/) {
if ($line =~ /^.#\s*(ifdef|ifndef|elif)\s\s+/) {
$line !~ /^.#\s*if\b.*\bNR_CPUS\b/ &&
$line !~ /^.#\s*define\b.*\bNR_CPUS\b/ &&--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.940.382.4214
--
This is because we always are dealing with diff lines, not real lines.
So there is always a ' ', '+', or '-' in character 0 of the line (within
a diff hunk). In some tests we may be looking at either context ' '
or new lines '+' and so its handy to use '.' over '[ \+]', and I have-apw
--
Perhaps it is because checkpatch.pl is supposed to check *patches*,
which are typically indented by one character (+- )?Rogan
--
Even so, the regexes are not entirely accurate.
Patch below.===
commit e08a94e334d67ac5f2437c8aba4c6ffbb058d7db
Author: Jan Engelhardt <jengelh@medozas.de>
Date: Tue Apr 29 00:06:42 2008 +0200checkpatch: fix recognition of preprocessor directives
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 58a9494..22df611 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -355,12 +355,12 @@ sub sanitise_line {
}# The pathname on a #include may be surrounded by '<' and '>'.
- if ($res =~ /^.#\s*include\s+\<(.*)\>/) {
+ if ($res =~ /^.\s*#\s*include\s+\<(.*)\>/) {
my $clean = 'X' x length($1);
$res =~ s@\<.*\>@<$clean>@;# The whole of a #error is a string.
- } elsif ($res =~ /^.#\s*(?:error|warning)\s+(.*)\b/) {
+ } elsif ($res =~ /^.\s*#\s*(?:error|warning)\s+(.*)\b/) {
my $clean = 'X' x length($1);
$res =~ s@(#\s*(?:error|warning)\s+).*@$1$clean@;
}
@@ -1194,7 +1194,7 @@ sub process {# if/while/etc brace do not go on next line, unless defining a do while loop,
# or if that brace on the next line is for something else
- if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.#/) {
+ if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.\s*#/) {
my $pre_ctx = "$1$2";my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0);
@@ -1877,7 +1877,7 @@ sub process {
}# warn about #if 0
- if ($line =~ /^.#\s*if\s+0\b/) {
+ if ($line =~ /^.\s*#\s*if\s+0\b/) {
CHK("if this code is redundant consider removing it\n" .
$herecurr);
}
@@ -1891,14 +1891,14 @@ sub process {
}# warn about #ifdefs in C files
-# if ($line =~ /^.#\s*if(|n)def/ && ($realfile =~ /\.c$/)) {
+# if ($line =~ /^.\s*#\s*if(|n)def/ && ($realfile =~ /\.c$/)) {
# print "#ifdef in C files should be avoided\n";
# print "$here...
Yeah I was under the missaprehension that whitespace was allowed after
the # but not before. That seems to be flawed. Thanks for the patch."Preprocessing directives are lines in your program that start with `#'.
--
It is true for K&R C (so with -traditional cpp mode), but indeed
false for ISO C.Segher
--
You're a genius. It's an honor to be of the same species.
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.940.382.4214
--
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| James Bottomley | Re: Integration of SCST in the mainstream Linux kernel |
| Stephen Rothwell | Re: Announce: Linux-next (Or Andrew's dream :-)) |
| Arjan van de Ven | Re: [malware-list] [RFC 0/5] [TALPA] Intro to a linux interfaceforon access scanning |
| Patrick McHardy | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Eric W. Biederman | Re: namespace support requires network modules to say "GPL" |
git: | |
