Networking prefers this style, so warn when it's not used.

Networking uses:

void foo(int bar)
{
        int baz;

        code...
}

not

void foo(int bar)
{
        int baz;
        code...
}

There are a limited number of false positives when using
macros to declare variables like:

WARNING: networking uses a blank line after declarations
#330: FILE: net/ipv4/inet_hashtables.c:330:
+       int dif = sk->sk_bound_dev_if;
+       INET_ADDR_COOKIE(acookie, saddr, daddr)

Signed-off-by: Joe Perches <j...@perches.com>
---
 scripts/checkpatch.pl | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3d3ef2f..a6e3048 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2248,6 +2248,21 @@ sub process {
                             "networking block comments put the trailing */ on 
a separate line\n" . $herecurr);
                }
 
+# check for missing blank lines after declarations
+               if ($realfile =~ m@^(drivers/net/|net/)@ &&
+                   $prevline =~ /^\+\s+$Declare\s+$Ident/ &&
+                   !($prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ ||
+                     $prevline =~ /(?:\{\s*|\\)$/) &&          #extended lines
+                   $sline =~ /^\+\s+/ &&                       #Not at char 1
+                   !($sline =~ /^\+\s+$Declare/ ||
+                     $sline =~ /^\+\s+$Ident\s+$Ident/ ||      #eg: typedef foo
+                     $sline =~ /^\+\s+(?:union|struct|enum|typedef)\b/ ||
+                     $sline =~ /^\+\s+(?:$|[\{\}\.\#\"\?\:\(])/ ||
+                     $sline =~ 
/^\+\s+\(?\s*(?:$Compare|$Assignment|$Operators)/)) {
+                       WARN("SPACING",
+                            "networking uses a blank line after 
declarations\n" . $hereprev);
+               }
+
 # check for spaces at the beginning of a line.
 # Exceptions:
 #  1) within comments


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to