* [PATCH] headers_check: recursively search for linux/types.h inclusion
@ 2012-02-23 21:23 Bobby Powers
0 siblings, 0 replies; only message in thread
From: Bobby Powers @ 2012-02-23 21:23 UTC (permalink / raw)
To: linux-kernel; +Cc: sam, akpm, airlied, Bobby Powers
headers_check.pl currently emits some spurious warnings, especially
for the drm headers, about using __[us]{8,16,32,64} types without
including linux/types.h. Recursively search for types.h inclusion,
avoiding circular references.
Signed-off-by: Bobby Powers <bobbypowers@gmail.com>
---
| 38 +++++++++++++++++++++++++++++++++++++-
1 files changed, 37 insertions(+), 1 deletions(-)
--git a/scripts/headers_check.pl b/scripts/headers_check.pl
index 7957e7a..64ac238 100644
--- a/scripts/headers_check.pl
+++ b/scripts/headers_check.pl
@@ -19,6 +19,7 @@
# 3) Check for leaked CONFIG_ symbols
use strict;
+use File::Basename;
my ($dir, $arch, @files) = @ARGV;
@@ -99,6 +100,39 @@ sub check_asm_types
}
my $linux_types;
+my %import_stack = ();
+sub check_include_typesh
+{
+ my $path = $_[0];
+ my $import_path;
+
+ my $fh;
+ my @file_paths = ($path, $dir . "/" . $path, dirname($filename) . "/" . $path);
+ for my $possible ( @file_paths ) {
+ if (not $import_stack{$possible} and open($fh, '<', $possible)) {
+ $import_path = $possible;
+ $import_stack{$import_path} = 1;
+ last;
+ }
+ }
+ if (eof $fh) {
+ return;
+ }
+
+ my $line;
+ while ($line = <$fh>) {
+ if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
+ $linux_types = 1;
+ last;
+ }
+ if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
+ check_include_typesh($included);
+ }
+ }
+ close $fh;
+ delete $import_stack{$import_path};
+}
+
sub check_sizetypes
{
if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) {
@@ -113,6 +147,9 @@ sub check_sizetypes
$linux_types = 1;
return;
}
+ if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
+ check_include_typesh($included);
+ }
if ($line =~ m/__[us](8|16|32|64)\b/) {
printf STDERR "$filename:$lineno: " .
"found __[us]{8,16,32,64} type " .
@@ -122,4 +159,3 @@ sub check_sizetypes
#$ret = 1;
}
}
-
--
1.7.7.6
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-02-23 21:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-23 21:23 [PATCH] headers_check: recursively search for linux/types.h inclusion Bobby Powers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox