linux/scripts/headers_check.pl
<<
>>
Prefs
   1#!/usr/bin/perl
   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;
  20use warnings;
  21
  22my ($dir, $arch, @files) = @ARGV;
  23
  24my $ret = 0;
  25my $line;
  26my $lineno = 0;
  27my $filename;
  28
  29foreach my $file (@files) {
  30        $filename = $file;
  31        open(my $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}
  57
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.