summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/durep/files/durep-0.9-r4-color-output.patch')
-rw-r--r--app-admin/durep/files/durep-0.9-r4-color-output.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/app-admin/durep/files/durep-0.9-r4-color-output.patch b/app-admin/durep/files/durep-0.9-r4-color-output.patch
new file mode 100644
index 000000000000..6b8956199406
--- /dev/null
+++ b/app-admin/durep/files/durep-0.9-r4-color-output.patch
@@ -0,0 +1,98 @@
+--- durep
++++ durep
+@@ -14,6 +14,8 @@
+ #############################################################################
+
+ use Getopt::Long;
++use feature '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,
+@@ -332,13 +337,58 @@
+ 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 {
++ given ($tmp[$#tmp]) {
++ #executable (bright green)
++ when([ qw(cmd exe com btm bat sh csh) ]) {
++ print BOLD, GREEN, $entry->{NAME}."\n", RESET
++ }
++ #archives / compressed (bright red)
++ when([ qw(tar tgz arj taz lzh zip z Z gz bz2 tbz2 tz deb rpm rar ace zoo cpio 7z rz) ]) {
++ print BOLD, RED, $entry->{NAME}."\n", RESET
++ }
++ #image formats
++ when([ qw(jpg jpeg gif bmp ppm tga xbm xpm tif tiff png mng xcf pcx mpg mpeg m2v avi mkv
++ ogm mp4 mp4v mov qt wmv asf rm rmvb flc fli gl dl) ]) {
++ print BOLD, MAGENTA, $entry->{NAME}."\n", RESET
++ }
++ #misc.
++ when([ qw(pdf ps txt patch diff log tex doc) ]) {
++ print GREEN, $entry->{NAME}."\n", RESET
++ }
++ when([ qw(mp3 wav mid midi au ogg flac aac) ]) {
++ print CYAN, $entry->{NAME}."\n", RESET
++ }
++ default {
++ 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);
+
+@@ -438,6 +488,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