--- 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,118 @@ 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= give description of save file -c, --collate= 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