|
|
############################################################################# | ############################################################################# |
| |
use Getopt::Long; | use Getopt::Long; |
|
use Switch; |
|
use Term::ANSIColor qw(:constants); |
use File::Basename; | use File::Basename; |
use MLDBM qw(DB_File Storable); | use MLDBM qw(DB_File Storable); |
use Fcntl; | use Fcntl; |
|
|
our ($root_node, $filesystem_id, @stats); | our ($root_node, $filesystem_id, @stats); |
our ($opt_help, $opt_version, $opt_textdepth, $opt_hidesize, $opt_showdate, $opt_nosort, $opt_quiet); | our ($opt_help, $opt_version, $opt_textdepth, $opt_hidesize, $opt_showdate, $opt_nosort, $opt_quiet); |
our ($opt_savefile, $opt_loadfile, $opt_desc, $opt_collate); | our ($opt_savefile, $opt_loadfile, $opt_desc, $opt_collate); |
|
our ($opt_nocolor); |
our ($opt_files, $opt_onefilesystem, $opt_collapsepath, $opt_excludepath, $opt_coalescefiles); | our ($opt_files, $opt_onefilesystem, $opt_collapsepath, $opt_excludepath, $opt_coalescefiles); |
our ($root_dir, $file_count, $dir_count, $next_id); | our ($root_dir, $file_count, $dir_count, $next_id); |
our ($TYPE_FILE, $TYPE_DIR, $TYPE_EMPTY, $TYPE_COALESCED, $TYPE_COLLAPSED); | our ($TYPE_FILE, $TYPE_DIR, $TYPE_EMPTY, $TYPE_COALESCED, $TYPE_COLLAPSED); |
|
|
"d|desc=s" => \$opt_desc, | "d|desc=s" => \$opt_desc, |
"c|collate=s" => \$opt_collate, | "c|collate=s" => \$opt_collate, |
| |
|
"nc|nocolor" => \$opt_nocolor, |
|
|
"f|files" => \$opt_files, | "f|files" => \$opt_files, |
"x|one-file-system" => \$opt_onefilesystem, | "x|one-file-system" => \$opt_onefilesystem, |
"cp|collapse-path=s" => \$opt_collapsepath, | "cp|collapse-path=s" => \$opt_collapsepath, |
|
|
printf(" [%s%s] ", "#" x $numofchars, " " x (30-$numofchars)); | printf(" [%s%s] ", "#" x $numofchars, " " x (30-$numofchars)); |
printf("%6.2f%% ", $percent); | printf("%6.2f%% ", $percent); |
printf("%s ", shortDate($entry->{MTIME})) if $opt_showdate; | printf("%s ", shortDate($entry->{MTIME})) if $opt_showdate; |
printf("%s%s\n", $entry->{NAME}, $entry->{TYPE} & $TYPE_DIR ? "/" : ""); |
|
|
printColor( $entry ) unless ( $opt_nocolor ); |
|
printNoColor( $entry ) if ( $opt_nocolor ); |
if($entry->{TYPE} & $TYPE_DIR) { | if($entry->{TYPE} & $TYPE_DIR) { |
printDir($entry, $indent+1) if(!defined $opt_textdepth || ($opt_textdepth > $indent+1)); | printDir($entry, $indent+1) if(!defined $opt_textdepth || ($opt_textdepth > $indent+1)); |
} | } |
} | } |
} | } |
| |
|
sub printColor { |
|
my $entry = shift; |
|
|
|
my @tmp = split /\./, $entry->{NAME}; |
|
|
|
if ( $entry->{TYPE} & $TYPE_DIR ) { print BLUE, BOLD, $entry->{NAME}."/\n", RESET } |
|
else { |
|
switch ($tmp[$#tmp]) { |
|
#executable ( brigth gree) |
|
case "cmd" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "exe" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "com" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "btm" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "bat" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "sh" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
case "csh" { print BOLD, GREEN, $entry->{NAME}."\n", RESET } |
|
|
|
#archieves / compressed (brigth red) |
|
case "tar" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "tgz" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "arj" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "taz" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "lzh" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "zip" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "z" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "Z" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "gz" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "bz2" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "tbz2" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "tz" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "deb" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "rpm" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "rar" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "ace" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "zoo" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "cpio" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "7z" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
case "rz" { print BOLD, RED, $entry->{NAME}."\n", RESET } |
|
|
|
#image formats |
|
case "jpg" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "jpeg" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "gif" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "bmp" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "ppm" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "tga" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "xbm" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "xpm" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "tif" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "tiff" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "png" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mng" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "xcf" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "pcx" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mpg" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mpeg" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "m2v" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "avi" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mkv" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "ogm" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mp4" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mp4v" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "mov" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "qt" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "wmv" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "asf" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "rm" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "rmvb" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "flc" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "fli" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "gl" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
case "dl" { print BOLD, MAGENTA, $entry->{NAME}."\n", RESET } |
|
|
|
|
|
case "pdf" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "ps" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "txt" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "patch" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "diff" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "log" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "tex" { print GREEN, $entry->{NAME}."\n", RESET } |
|
case "doc" { print GREEN, $entry->{NAME}."\n", RESET } |
|
|
|
case "mp3" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "wav" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "mid" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "midi" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "au" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "ogg" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "flac" { print CYAN, $entry->{NAME}."\n", RESET } |
|
case "aac" { print CYAN, $entry->{NAME}."\n", RESET } |
|
|
|
else { print $entry->{NAME}."\n", RESET } |
|
} |
|
} |
|
} |
|
|
|
sub printNoColor { |
|
my $entry = shift; |
|
|
|
printf("%s%s\n", $entry->{NAME}, $entry->{TYPE} & $TYPE_DIR ? "/" : ""); |
|
} |
|
|
sub processSizeOption { | sub processSizeOption { |
my ($size, $temp); | my ($size, $temp); |
| |
|
|
-d, --desc=<description> give description of save file | -d, --desc=<description> give description of save file |
-c, --collate=<dir> collate save files in dir for web report | -c, --collate=<dir> collate save files in dir for web report |
| |
|
Color Option: |
|
-nc, --nocolor no color output |
|
By default durep color outpu |
Inclusion Options: | Inclusion Options: |
-f, --files do not descend into subdirs, only report files | -f, --files do not descend into subdirs, only report files |
-x, --one-file-system do not traverse file systems | -x, --one-file-system do not traverse file systems |