fplist.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:39 2010 from fplist.pl 2007/06/04 3.8 KB.

#!/perl -w
# NAME: fplist.pl
# AIM: Read an input DIRECTORY, and output a LIST of FRONTPAGE directories
# to be EXCLUDED ...
# 11/04/2007 - geoff mclane - geoffair.com/mperl
use strict;
use warnings;
unshift(@INC, 'C:/GTools/perl');
require 'logfile.pl' or die "Unable to load logfile.pl ...\n";
my $pgmname = $0;
if ($pgmname =~ /\w{1}:\\.*/) {
   my @tmpsp = split(/\\/,$pgmname);
   $pgmname = $tmpsp[-1];
}
# log file stuff
my ($LF);
my $outfile = 'temp.'.$pgmname.'.txt';
open_log($outfile);
### prt( "$pgmname ... Hello, World ...\n" );
#my $in_folder = "C:\\HOMEPAGE\\P26";
my $in_folder = '';
my @excl_list = qw( _derived _private _vti_cnf _vti_pvt );
my @folders = ();
my $excl = '';
my $cnt = 0;
my ($DH);
my $verb = 0;   # additional output ...
my $full = 0;   # show full path
my $wild = 1;   # show wild path
my $out_file = '';   # set an OUTPUT FILE
my $msg = '';
parse_args(@ARGV);
if (!length($in_folder)) {
   mydie( "ERROR: NO IN-FOLDER found ... \n" );
} elsif ( !-d $in_folder) {
   mydie( "ERROR: Unable to find FOLDER [$in_folder] ... $! ... \n" );
}
$cnt = process_directory( $in_folder, 0 );
prt( "Found list of $cnt ...\n" ) if ($verb);
if (length($out_file)) {
   open OUTF, ">$out_file" or mydie( "ERROR: Unable to create $out_file! ... $! ...\n" );
}
foreach $excl (@folders) {
   $msg = get_out_msg($excl);
   prt( "$msg\n" );
   if (length($out_file)) {
      print OUTF "$msg\n";
   }
}
if (length($out_file)) {
   close OUTF;
   prt( "List written to [$out_file] ...\n" );
}
close_log($outfile,0);
exit(0);
#####################################################
sub get_out_msg {
   my ($ex) = shift;
   if (!$full) {
      $ex = sub_main($ex);
   }
   if ($wild) {
      $ex .= "\\*.*";
   }
   return $ex;
}
sub give_help {
   prt( "$pgmname [options] in-folder\n" );
   prt( "Options:\n" );
   prt( " -? or -h = this brief help\n" );
   prt( " -f       = show full path\n" );
   prt( " -n       = no wild card addition\n" );
   prt( " -o file  = output file\n" );
   prt( " -v       = set verbosity\n" );
   prt( "Default in_folder = $in_folder\n" ) if (length($in_folder));
   mydie( "                              happy listing!\n" );
}
# Ensure argument exists, or die.
sub require_arg {
    my ($arg, @arglist) = @_;
    mydie( "ERROR: no argument given for option '$arg' ...\n" ) if ! @arglist;
}
sub parse_args {
   my @av = @_;
   while (@av) {
      my $arg = $av[0];
      if ($arg =~ /^-/) {
         if (($arg eq '-?')||($arg eq '-h')) {
            give_help();
         } elsif ($arg eq '-f') {
            $full = 1;
         } elsif ($arg eq '-n') {
            $wild = 0;
         } elsif ($arg eq '-o') {
            require_arg(@av);
            shift @av;
            $out_file = $av[0];
         } elsif ($arg eq '-v') {
            $verb = 1;
         } else {
            mydie( "ERROR: UNKNOWN ARG [$arg]!\n" );
         }
      } else {
         if ( -d $arg) {
            $in_folder = $arg;
            prt( "Set input folder to [$in_folder] ...\n" );
         } else {
            mydie( "ERROR: INPUT FOLDER [$arg] DOES NOT EXIST!\n" );
         }
      }
      shift @av;
   }
}
sub in_excl_list {
   my ($d) = shift;
   my $ld = lc($d);
   foreach my $ed (@excl_list) {
      if ($ld eq lc($ed)) {
         return 1;
      }
   }
   return 0;
}
sub sub_main {
   my ($f) = shift;
   return substr($f, length($in_folder) + 1);
}
sub process_directory { ## $in_folder
   my ($inf, $lev) = @_;
   my $rcnt = 0;
   if ( !opendir($DH, $inf) ) {
      prt( "ERROR: Unable to OPEN FOLDER [$inf] ... $! ... \n" );
      return $rcnt;
   }
   my @files = readdir($DH);
   closedir $DH;
   my $fcnt = scalar @files;
   prt( "Have $fcnt to process from $inf ...\n" ) if ($verb);
   foreach my $file (@files) {
      if (($file eq '.') || ($file eq '..')) {
         next;
      }
      my $ff = $inf . "\\" . $file;
      if (-d $ff) {
         if (in_excl_list($file)) {
            push(@folders, $ff);
            $rcnt++;
         }
         $rcnt += process_directory( $ff, $lev + 1 );
      }
   }
   return $rcnt;
}
# eof - fplist.pl

index -|- top

checked by tidy  Valid HTML 4.01 Transitional