vc8config.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:59 2010 from vc8config.pl 2007/09/05 3.6 KB.

#!/perl -w
# NAME: vc8config.pl
# AIM: To read a config.h.in file, and write a config.h, using
# the include PATH of MSVC8
use strict;
use warnings;
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);
prt( "$0 ... Hello, World ...\n" );
my @headers = ();
my $hcnt = 0;
my $vc8_inc = "C:\\Program Files\\Microsoft Visual Studio 8\\VC\\INCLUDE";
my $cfg_in = "C:\\FG\\FGCOM\\libtheora\\config.h.in";
my @vc8includes = ();
my $vc8cnt = 0;
# debug
my $dbg1 = 0;   # show includes, as found ...
my $dbg2 = 0;   # show config.h.in decode as found ...
load_includes( $vc8_inc );
$vc8cnt = scalar @vc8includes;
prt( "Got $vc8cnt include from [$vc8_inc]...\n" );
load_cfg_in( $cfg_in );
$hcnt = scalar @headers;
prt( "Found $hcnt items ...\n" );
find_headers();
close_log($outfile,1);
exit(0);
########################################
####### subs
sub load_includes {
   my ($dir) = shift;
   if ( opendir(DH, $dir) ) {
      my @files = readdir(DH);
      closedir(DH);
      foreach my $fil (@files) {
         next if ($fil eq '.');
         next if ($fil eq '..');
         my $ff = $dir;
         $ff .= "\\" if ( !($fil =~ /[\\\/]$/) );
         $ff .= $fil;
         if ( -d $ff) {
            load_includes($ff);
         } else {
            my $sf = substr($ff, length($vc8_inc));
            $sf =~ s/^[\\\/]//;
            prt( "$sf\n" ) if ($dbg1);
            push(@vc8includes, $sf);
         }
      }
   } else {
      prt( "WARNING: FAILED TO OPEN [$dir] ...\n" );
   }
}
sub load_cfg_in {
   my ($fil) = shift;
   if (open(INF, "<$fil")) {
      my @lines = <INF>;
      close INF;
      my $lnc = scalar @lines;
      my $inc = '';
      my $def = '';
      my $val = '';
      my $comln = '';
      prt( "Processing $lnc lines from [$fil] ...\n" );
      foreach my $ln (@lines) {
         chomp $ln;
         $ln = trim_all($ln);
         if ($ln =~ /\/\*\s+(.*)\*\//) {
            $comln = $ln;
            my $com = $1;
            #prt( "Comment [$ln] ...\n" );
            prt( "Comment [$com] ...\n" ) if ($dbg2);
            if ($com =~ /<([\w\/\\\.-]+)>/) {
               $inc = $1;
               prt( "Find [$inc] ...\n" ) if ($dbg2);
            }
            push(@headers, [$inc, $def, $val, $comln, $ln]); # if length($inc);
         } elsif ($ln =~ /^#(\w+)\s+(.*).*/) {
            $def = $1;
            $val = $2;
            prt( "$def = $val\n" ) if ($dbg2);
            push(@headers, [$inc, $def, $val, $comln, $ln]); # if length($inc);
            $inc = '';
            $comln = '';
          } else {
            $def = '';
            $val = '';
            push(@headers, [$inc, $def, $val, $comln, $ln]); # if length($inc);
         }
      }
   } else {
      prt( "WARNING: Failed to open [$fil] ... $! ...\n" );
   }
}
sub dos_2_unix {
   my ($p) = shift;
   $p =~ s/\\/\//g;
   return $p;
}
sub in_vc8include {
   my ($f1) = shift;
   my $vc = scalar @vc8includes;
   my $uf1 = lc(dos_2_unix($f1));
   for (my $j = 0; $j < $vc; $j++) {
      my $uf2 = lc(dos_2_unix($vc8includes[$j]));
      if ($uf1 eq $uf2) {
         return 1;
      }
   }
   return 0;
}
sub find_headers {
   my ($hinc, $hdef, $hval, $hcom, $hln);
   # push(@headers, [$inc, $def, $val]) if length($inc);
   for (my $i = 0; $i < $hcnt; $i++) {
      $hinc = $headers[$i][0];
      $hdef = $headers[$i][1];
      $hval = $headers[$i][2];
      $hcom = $headers[$i][3];
      $hln = $headers[$i][4];
      if (length($hdef) && length($hval)) {
         if (length($hinc)) {
            if (in_vc8include($hinc)) {
               prt( "#define $hval 1\n" );
            } else {
               prt( "#undef $hval\n" );
            }
         } else {
            prt( "#$hdef $hval\n" );
         }
      } else {
         prt( "$hln\n" );
      }
   }
}
# eof - vc8config.pl

index -|- top

checked by tidy  Valid HTML 4.01 Transitional