common/tools/listdir.pl
author Matt Davies <mattd@symbian.org>
Tue, 19 May 2009 16:02:09 +0100
changeset 100 c222f4b27ad7
parent 78 52cc4f7310db
child 108 d33d43677cdf
permissions -rw-r--r--
parselistdirs.pl - fixed export scanning and added output path for logs. - 'uptodate' export scanning looks in all logs, not just 'clean' ones. - Exported is a new group, and those exports have been removed form other groups. - Logs output path flexiblility improved - The following are now the same: I:\logs\generated>perl parselistdirs.pl ..\ >list_results.log I:\>perl logs\generated\parselistdirs.pl logs\ logs\generated\ >logs\generated\list_results.log

#!perl -w
use strict;

my $dir      = shift or die "Usage: $0 <dir> \n";   #  provided dir to traverse
my $filelist = [];
my $init = $dir = lc($dir);
$init =~ s{\\}{\\\\};

# fwd declaration to prevent warning
sub recursedir($$);

# run recurse and print
recursedir ($dir, $filelist);

print $_, "\n" for(@$filelist);

sub recursedir($$) {

  my $dir  = shift @_;
  my $list = shift @_;

  if(opendir(DIR, "$dir")) {
    #  list dir
    for my $file(grep { !/^\./ } readdir DIR) {
      if(-d "$dir/$file") {
        #  traverse subdirs
        recursedir("$dir/$file", $list);
      }
      elsif(-f "$dir/$file") {
        my $formatted = lc($dir)."/".lc($file);
        $formatted =~ s!$init/!!;
        push @$list, $formatted;
      }
    }
    closedir DIR;
  }
  else {
    warn "Cannot open the directory '$dir' $!\n";
  }
}