blob: 9e491f500581af9ed30d7e6bcb511bd5b7b0efc4 [file] [log] [blame]
--- durep 2005-04-11 14:07:48.000000000 +0200
+++ durep_new 2005-04-11 14:08:27.000000000 +0200
@@ -14,6 +14,8 @@
#############################################################################
use Getopt::Long;
+use Switch;
+use Term::ANSIColor qw(:constants);
use File::Basename;
use MLDBM qw(DB_File Storable);
use Fcntl;
@@ -27,6 +29,7 @@
our ($root_node, $filesystem_id, @stats);
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_nocolor);
our ($opt_files, $opt_onefilesystem, $opt_collapsepath, $opt_excludepath, $opt_coalescefiles);
our ($root_dir, $file_count, $dir_count, $next_id);
our ($TYPE_FILE, $TYPE_DIR, $TYPE_EMPTY, $TYPE_COALESCED, $TYPE_COLLAPSED);
@@ -56,6 +59,8 @@
"d|desc=s" => \$opt_desc,
"c|collate=s" => \$opt_collate,
+ "nc|nocolor" => \$opt_nocolor,
+
"f|files" => \$opt_files,
"x|one-file-system" => \$opt_onefilesystem,
"cp|collapse-path=s" => \$opt_collapsepath,
@@ -331,13 +336,117 @@
printf(" [%s%s] ", "#" x $numofchars, " " x (30-$numofchars));
printf("%6.2f%% ", $percent);
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) {
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 {
my ($size, $temp);
@@ -437,6 +547,9 @@
-d, --desc=<description> give description of save file
-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:
-f, --files do not descend into subdirs, only report files
-x, --one-file-system do not traverse file systems