Skip to content

Commit

Permalink
checkpatch: prefer kstrto<foo> to sscanf(buf, "%<lhuidx>", &bar);
Browse files Browse the repository at this point in the history
Use the kstrto<foo> functions in preference to sscanf.

Signed-off-by: Joe Perches <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
JoePerches authored and torvalds committed Jun 4, 2014
1 parent 60a5536 commit afc819a
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -4314,6 +4314,27 @@ sub process {
"unchecked sscanf return value\n" . "$here\n$stat_real\n");
}

# check for simple sscanf that should be kstrto<foo>
if ($^V && $^V ge 5.10.0 &&
defined $stat &&
$line =~ /\bsscanf\b/) {
my $lc = $stat =~ tr@\n@@;
$lc = $lc + $linenr;
my $stat_real = raw_line($linenr, 0);
for (my $count = $linenr + 1; $count <= $lc; $count++) {
$stat_real = $stat_real . "\n" . raw_line($count, 0);
}
if ($stat_real =~ /\bsscanf\b\s*\(\s*$FuncArg\s*,\s*("[^"]+")/) {
my $format = $6;
my $count = $format =~ tr@%@%@;
if ($count == 1 &&
$format =~ /^"\%(?i:ll[udxi]|[udxi]ll|ll|[hl]h?[udxi]|[udxi][hl]h?|[hl]h?|[udxi])"$/) {
WARN("SSCANF_TO_KSTRTO",
"Prefer kstrto<type> to single variable sscanf\n" . "$here\n$stat_real\n");
}
}
}

# check for new externs in .h files.
if ($realfile =~ /\.h$/ &&
$line =~ /^\+\s*(extern\s+)$Type\s*$Ident\s*\(/s) {
Expand Down

0 comments on commit afc819a

Please sign in to comment.