at v2.6.28 1.2 kB view raw
1#!/usr/bin/perl -w 2# 3# headers_check.pl execute a number of trivial consistency checks 4# 5# Usage: headers_check.pl dir [files...] 6# dir: dir to look for included files 7# arch: architecture 8# files: list of files to check 9# 10# The script reads the supplied files line by line and: 11# 12# 1) for each include statement it checks if the 13# included file actually exists. 14# Only include files located in asm* and linux* are checked. 15# The rest are assumed to be system include files. 16# 17# 2) TODO: check for leaked CONFIG_ symbols 18 19use strict; 20 21my ($dir, $arch, @files) = @ARGV; 22 23my $ret = 0; 24my $line; 25my $lineno = 0; 26my $filename; 27 28foreach my $file (@files) { 29 local *FH; 30 $filename = $file; 31 open(FH, "<$filename") or die "$filename: $!\n"; 32 $lineno = 0; 33 while ($line = <FH>) { 34 $lineno++; 35 check_include(); 36 } 37 close FH; 38} 39exit $ret; 40 41sub check_include 42{ 43 if ($line =~ m/^\s*#\s*include\s+<((asm|linux).*)>/) { 44 my $inc = $1; 45 my $found; 46 $found = stat($dir . "/" . $inc); 47 if (!$found) { 48 $inc =~ s#asm/#asm-$arch/#; 49 $found = stat($dir . "/" . $inc); 50 } 51 if (!$found) { 52 printf STDERR "$filename:$lineno: included file '$inc' is not exported\n"; 53 $ret = 1; 54 } 55 } 56}