1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/perl -w
- #
- # headers_check.pl execute a number of trivial consistency checks
- #
- # Usage: headers_check.pl dir [files...]
- # dir: dir to look for included files
- # arch: architecture
- # files: list of files to check
- #
- # The script reads the supplied files line by line and:
- #
- # 1) for each include statement it checks if the
- # included file actually exists.
- # Only include files located in asm* and linux* are checked.
- # The rest are assumed to be system include files.
- #
- # 2) TODO: check for leaked CONFIG_ symbols
- use strict;
- my ($dir, $arch, @files) = @ARGV;
- my $ret = 0;
- my $line;
- my $lineno = 0;
- my $filename;
- foreach my $file (@files) {
- local *FH;
- $filename = $file;
- open(FH, "<$filename") or die "$filename: $!\n";
- $lineno = 0;
- while ($line = <FH>) {
- $lineno++;
- check_include();
- }
- close FH;
- }
- exit $ret;
- sub check_include
- {
- if ($line =~ m/^\s*#\s*include\s+<((asm|linux).*)>/) {
- my $inc = $1;
- my $found;
- $found = stat($dir . "/" . $inc);
- if (!$found) {
- $inc =~ s#asm/#asm-$arch/#;
- $found = stat($dir . "/" . $inc);
- }
- if (!$found) {
- printf STDERR "$filename:$lineno: included file '$inc' is not exported\n";
- $ret = 1;
- }
- }
- }
|