checkpatch: Prefer seq_puts to seq_printf
authorJoe Perches <joe@perches.com>
Mon, 29 Apr 2013 23:18:13 +0000 (16:18 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Apr 2013 01:28:19 +0000 (18:28 -0700)
Add a check for seq_printf use with a constant format without additional
arguments.  Suggest seq_puts instead.

Signed-off-by: Joe Perches <joe@perches.com>
Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/checkpatch.pl

index a820249a3fce0e2c7d488a27286926aa14779a7c..b8b03aa52beb3c4c60d5818272ffcbea5884bdab 100755 (executable)
@@ -628,6 +628,13 @@ sub sanitise_line {
        return $res;
 }
 
+sub get_quoted_string {
+       my ($line, $rawline) = @_;
+
+       return "" if ($line !~ m/(\"[X]+\")/g);
+       return substr($rawline, $-[0], $+[0] - $-[0]);
+}
+
 sub ctx_statement_block {
        my ($linenr, $remain, $off) = @_;
        my $line = $linenr - 1;
@@ -3373,6 +3380,15 @@ sub process {
                             "struct spinlock should be spinlock_t\n" . $herecurr);
                }
 
+# check for seq_printf uses that could be seq_puts
+               if ($line =~ /\bseq_printf\s*\(/) {
+                       my $fmt = get_quoted_string($line, $rawline);
+                       if ($fmt !~ /[^\\]\%/) {
+                               WARN("PREFER_SEQ_PUTS",
+                                    "Prefer seq_puts to seq_printf\n" . $herecurr);
+                       }
+               }
+
 # Check for misused memsets
                if ($^V && $^V ge 5.10.0 &&
                    defined $stat &&