The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/scripts/checkversion.pl

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #! /usr/bin/perl
    2 #
    3 # checkversion find uses of LINUX_VERSION_CODE or KERNEL_VERSION
    4 # without including <linux/version.h>, or cases of
    5 # including <linux/version.h> that don't need it.
    6 # Copyright (C) 2003, Randy Dunlap <rdunlap@xenotime.net>
    7 
    8 use strict;
    9 
   10 $| = 1;
   11 
   12 my $debugging;
   13 
   14 foreach my $file (@ARGV) {
   15     next if $file =~ "include/linux/version\.h";
   16     # Open this file.
   17     open( my $f, '<', $file )
   18       or die "Can't open $file: $!\n";
   19 
   20     # Initialize variables.
   21     my ($fInComment, $fInString, $fUseVersion);
   22     my $iLinuxVersion = 0;
   23 
   24     while (<$f>) {
   25         # Strip comments.
   26         $fInComment && (s+^.*?\*/+ +o ? ($fInComment = 0) : next);
   27         m+/\*+o && (s+/\*.*?\*/+ +go, (s+/\*.*$+ +o && ($fInComment = 1)));
   28 
   29         # Pick up definitions.
   30         if ( m/^\s*#/o ) {
   31             $iLinuxVersion      = $. if m/^\s*#\s*include\s*"linux\/version\.h"/o;
   32         }
   33 
   34         # Strip strings.
   35         $fInString && (s+^.*?"+ +o ? ($fInString = 0) : next);
   36         m+"+o && (s+".*?"+ +go, (s+".*$+ +o && ($fInString = 1)));
   37 
   38         # Pick up definitions.
   39         if ( m/^\s*#/o ) {
   40             $iLinuxVersion      = $. if m/^\s*#\s*include\s*<linux\/version\.h>/o;
   41         }
   42 
   43         # Look for uses: LINUX_VERSION_CODE, KERNEL_VERSION, UTS_RELEASE
   44         if (($_ =~ /LINUX_VERSION_CODE/) || ($_ =~ /\WKERNEL_VERSION/)) {
   45             $fUseVersion = 1;
   46             last if $iLinuxVersion;
   47         }
   48     }
   49 
   50     # Report used version IDs without include?
   51     if ($fUseVersion && ! $iLinuxVersion) {
   52         print "$file: $.: need linux/version.h\n";
   53     }
   54 
   55     # Report superfluous includes.
   56     if ($iLinuxVersion && ! $fUseVersion) {
   57         print "$file: $iLinuxVersion linux/version.h not needed.\n";
   58     }
   59 
   60     # debug: report OK results:
   61     if ($debugging) {
   62         if ($iLinuxVersion && $fUseVersion) {
   63             print "$file: version use is OK ($iLinuxVersion)\n";
   64         }
   65         if (! $iLinuxVersion && ! $fUseVersion) {
   66             print "$file: version use is OK (none)\n";
   67         }
   68     }
   69 
   70     close($f);
   71 }

Cache object: adfd0130af385edefc0036b14ea35e9a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.