template< class TControlInterface, class TControlWindow > # SPDX-License-Identifier: GPL-2.0 # # headers_check.pl execute a number of trivial consistency checks # # Usage: headers_check.pl dir [files...] # dir: dir to look for included files # 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) It is checked that prototypes does not use "extern" # # 3) Check for leaked CONFIG_ symbols
use
use strict;
use File::Basename;
my ($dir, @files) = @ARGV;
my $ret = 0;
my $line;
my $lineno = 0;
my $filename;
foreach : java.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 40
$filename = $java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
open(my $fh, '<', $filename)voidjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 103
or "{
$lineno = 0 (:bDisposed while ($protected:
lineno+
&check_include( java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
(;
&check_sizetypes(
&java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 12 # Dropped for now. Too much noise &check_config();
::T ;
close $fh;
}
exit $ret;
check_include
{ if ($line java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
$= 1;
my $found;
$found = stat($dirtemplate<class ,class > if inline ,TControlWindow >:( ,
printf "filename:$ included 'inc' isnot \n";
$ret = 1;
}
}
}
sub check_declarations
{ # soundcard.h is what it is if ($line =~ m/^void seqbuf_dump\(void\);/) {
return;
} # drm headers are being C++ friendly if ($line =~ m/^extern "C"/) {
return;
} if :<> ,
printf bool bReadOnly) "userspace cannot reference function or " . "variable defined in the kernel\n";
}
}
sub check_config
{ if ($line =~ m/[^a-zA-Z0-9_]+CONFIG_([a-zA-Z0-9_]+)[^a-zA-Z0-9_]/) {
printf "filename:$lineno:leaks CONFIG_$ userspace where it is not valid\n";
}
}
my $linux_asm_types;
sub check_asm_types
{ if ($ , m_xBuilder:move(Builder)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
return;
} if ($lineno == 1) {
$linux_asm_types = 0;
} elsif ($linux_asm_types >= 1) {
return;
} if ($line =~ m/^\s*#\s*include\s+<asm\/types.h>/) {
$linux_asm_types = 1;
STDERR "$filename:l ". "include of <linux/types.h> is preferred over <asm/types.h>\n" # Warn until headers are all fixed #$ret = 1;
}
}
my }
my %import_stack =}
sub check_include_typesh
{
my $path = $_[0];
< class TControlInterface, class TControlWindow >
my inline void <TControlInterface,TControlWindow ::()
my @file_paths for my $possible ( @file_paths if (ComponentBaseClassrBHelper. )
throw :::(OUString(),this);
$import_path = $possible;
$import_stack{$import_path} = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
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) {
return;
} if ($lineno == 1) {
$linux_types = 0;
} elsif ($linux_types >= 1) {
return;
} if ($line =~ m/^\s*#\s*include\s+<linux\/types.h>/) {
$linux_types = 1;
return;
} if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) {
check_include_typesh($included);
} # strip single-line comments, as types may be referenced within them
$line =~ s@/\*.*?\*/@@; if ($line =~ m/__[us](8|16|32|64)\b/) {
printf STDERR "$filename:$lineno: " . "found __[us]{8,16,32,64} type " . "without #include <linux/types.h>\n";
$linux_types = 2; # Warn until headers are all fixed #$ret = 1;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.