chkinclist.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:23 2010 from chkinclist.pl 2009/08/27 2.9 KB.

#!/perl -w
# NAME: chkinclist.pl
# AIM: VERY SPECIFIC - read MSVC 'include' list found, and analyse
# 8/27/2009 - geoff mclane - http://geoffair.net/mperl/
use strict;
use warnings;
use File::Basename;
unshift(@INC, 'C:/GTools/perl');
require 'logfile.pl' or die "Unable to load logfile.pl ...\n";
# log file stuff
my ($LF);
my $pgmname = $0;
if ($pgmname =~ /\w{1}:\\.*/) {
   my @tmpsp = split(/\\/,$pgmname);
   $pgmname = $tmpsp[-1];
}
my $outfile = "temp.$pgmname.txt";
open_log($outfile);
my $in_file = 'avcodincs.txt';
prt( "$0 ... processing $in_file ...\n" );
sub process_file($) {
   my ($fil) = shift;
   my (@lines, $line, $max, $i, $line2);
   my (@arr, $ac, $part, $inc, $cnt);
   my ($key, $val, $len, $msg, $fwinc);
   my (@arr2, $f, $d);
   my %files_wincs = ();
   my %inc_files = ();
   if (open INF, "<$fil") {
      @lines = <INF>;
      close INF;
      $max = scalar @lines;
      prt( "Processing $max lines, from $fil...\n" );
      for ($i = 0; $i < $max; $i++) {
         $line = $lines[$i];
         chomp $line;
         $line2 = trim_all($line);
         $line2 = substr($line2,2) if ($line2 =~ /^\w{1}:/);
         @arr = split(/:/, $line2);
         $ac = scalar @arr;
         $fwinc = $arr[0];   # get the include file
         $fwinc =~ s/\(\d+\)$//;
         ($f,$d) = fileparse($fwinc);
         #prt( "$fwinc\n" );
         if ($ac > 1) {
            $part = $arr[1];
            #prt( "$part \n" );
            if ($part =~ /#\s*include\s+["'<]{1}(.+)["'>]{1}/) {
               $inc = $1;
               #prt( "$inc " );
               if (defined $inc_files{$inc}) {
                  $inc_files{$inc}++;
               } else {
                  $inc_files{$inc} = 1;
               }
#               if (defined $files_wincs{$fwinc}) {
#                  $val = $files_wincs{$fwinc};
#                  push(@{$val}, $inc);
#                  $files_wincs{$fwinc} = $val;
#               } else {
#                  @arr2 = ();
#                  push(@arr2,$inc);
#                  $files_wincs{$fwinc} = [@arr2];
#               }
               if (defined $files_wincs{$f}) {
                  $val = $files_wincs{$f};
                  push(@{$val}, $inc);
                  $files_wincs{$f} = $val;
               } else {
                  @arr2 = ();
                  push(@arr2,$inc);
                  $files_wincs{$f} = [@arr2];
               }
            }
         }
      }
      prt("\n");
      $cnt = scalar keys(%inc_files);
      prt( "Got $cnt include files...\n" );
      $max = 0;
      foreach $key (keys %inc_files) {
         $len = length($key);
         $max = $len if ($len > $max);
      }
      $cnt = 0;
      foreach $key (keys %inc_files) {
         $msg = $key;
         $msg .= ' ' while (length($msg) < $max);
         $val = $inc_files{$key};
         $cnt++;
         prt("$cnt: $msg $val\n");
      }
      $cnt = 0;
      $max = 0;
      foreach $key (keys %files_wincs) {
         $len = length($key);
         $max = $len if ($len > $max);
      }
      foreach $key (keys %files_wincs) {
         $val = $files_wincs{$key};
         $msg = $key;
         $msg .= ' ' while (length($msg) < $max);
         $msg .= ' [';
         foreach $f (@{$val}) {
            $msg .= "$f ";
         }
         $msg =~ s/ $//;
         $msg .= ']';
         prt("$msg\n");
      }
   } else {
      prt( "ERROR: unable to open [$fil]...\n" );
   }
}
process_file($in_file);
close_log($outfile,1);
exit(0);
# eof

index -|- top

checked by tidy  Valid HTML 4.01 Transitional