]> git.treefish.org Git - fex.git/blobdiff - bin/l
Original release 20160328
[fex.git] / bin / l
diff --git a/bin/l b/bin/l
index c7d7667baeedfb7844b7b81992a73c16de5669c9..affd4a21f93475d1a0a24e24c4aaf7016bce703e 100755 (executable)
--- a/bin/l
+++ b/bin/l
@@ -4,7 +4,7 @@
 #
 # Author: Ulli Horlacher <framstag@rus.uni-stuttgart.de>
 #
 #
 # Author: Ulli Horlacher <framstag@rus.uni-stuttgart.de>
 #
-# Copyright: Perl Artistic License 
+# Perl Artistic License
 
 use Cwd qw'abs_path';
 use File::Basename;
 
 use Cwd qw'abs_path';
 use File::Basename;
@@ -76,7 +76,7 @@ if ($opt_D) {
     $newer = $1;
   }
 }
     $newer = $1;
   }
 }
-  
+
 # preselect date field number
 if    ($opt_c) { $sdf = 'c' }
 elsif ($opt_u) { $sdf = 'a' }
 # preselect date field number
 if    ($opt_c) { $sdf = 'c' }
 elsif ($opt_u) { $sdf = 'a' }
@@ -102,13 +102,13 @@ if (@LIST && $postproc) {
     $opt_z = '%'.$opt_z.'s ';
     @LIST = grep { s/\0 *([,\d\.\-]+) /sprintf($opt_z,$1)/e } @LIST;
   }
     $opt_z = '%'.$opt_z.'s ';
     @LIST = grep { s/\0 *([,\d\.\-]+) /sprintf($opt_z,$1)/e } @LIST;
   }
-  
+
   @LIST = reverse @LIST if $opt_r;
 
   if (not ($opt_t or $opt_U) and grep /^d[rR-][wW-][xX-]/,@LIST) {
     foreach (@LIST) { print if /^d/ }
     foreach (@LIST) { print unless /^d/ }
   @LIST = reverse @LIST if $opt_r;
 
   if (not ($opt_t or $opt_U) and grep /^d[rR-][wW-][xX-]/,@LIST) {
     foreach (@LIST) { print if /^d/ }
     foreach (@LIST) { print unless /^d/ }
-  } else { 
+  } else {
     print @LIST;
   }
 }
     print @LIST;
   }
 }
@@ -118,7 +118,7 @@ if ($opt_S && $SS) {
   print "$SS file(s):";
   printf " r=%d (%s Bytes)",$SS{'-'},&d3($Ss) if $SS{'-'};
   delete $SS{'-'};
   print "$SS file(s):";
   printf " r=%d (%s Bytes)",$SS{'-'},&d3($Ss) if $SS{'-'};
   delete $SS{'-'};
-  foreach my $type (qw(l d c b p s ?)) { 
+  foreach my $type (qw(l d c b p s ?)) {
     printf " %s=%d",$type,$SS{$type} if $SS{$type};
     delete $SS{$type};
   }
     printf " %s=%d",$type,$SS{$type} if $SS{$type};
     delete $SS{$type};
   }
@@ -130,7 +130,7 @@ exit ($found ? 0 : 1);
 
 
 # collect files and build file lists
 
 
 # collect files and build file lists
-# 
+#
 # INPUT: filenames
 #
 # GLOBAL: @LIST
 # INPUT: filenames
 #
 # GLOBAL: @LIST
@@ -140,10 +140,10 @@ sub collect {
 
   # loop over all argument files/directories
   foreach $f (@files) {
 
   # loop over all argument files/directories
   foreach $f (@files) {
-  
+
     # skip jed and emacs backup files
     # next if $f =~ /~$/ and not $opt_a and not $opt_l;
     # skip jed and emacs backup files
     # next if $f =~ /~$/ and not $opt_a and not $opt_l;
-    
+
     # recursive?
     if ($opt_R) {
 
     # recursive?
     if ($opt_R) {
 
@@ -158,7 +158,7 @@ sub collect {
       list($f);
 
       # traverse real subdirs
       list($f);
 
       # traverse real subdirs
-      if (-d $f and not -l $f) { 
+      if (-d $f and not -l $f) {
         $f =~ s:/*$:/:;
         # skip other file systems on -x
         if ($opt_x) {
         $f =~ s:/*$:/:;
         # skip other file systems on -x
         if ($opt_x) {
@@ -168,12 +168,12 @@ sub collect {
         }
         collect(getfiles($f));
       }
         }
         collect(getfiles($f));
       }
-      
+
     } else {
     } else {
-  
+
       # suppress trailing / on -d option
       $f =~ s:/$:: if $opt_d;
       # suppress trailing / on -d option
       $f =~ s:/$:: if $opt_d;
-    
+
       # on trailing / list subdirs, too
       if ($f =~ m:/$:) { &list(&getfiles($f)) }
       elsif ($f eq '') { &list('/') }
       # on trailing / list subdirs, too
       if ($f =~ m:/$:) { &list(&getfiles($f)) }
       elsif ($f eq '') { &list('/') }
@@ -187,7 +187,7 @@ sub collect {
         }
         list($f);
       }
         }
         list($f);
       }
-      
+
     }
   }
 }
     }
   }
 }
@@ -225,7 +225,7 @@ sub list {
 
     $day = $date;
     $day =~ s/\s.*//;
 
     $day = $date;
     $day =~ s/\s.*//;
-    
+
     if ($older) {
       next if $older =~ /-/ and $day gt $older;
       next if $older !~ /-/ and $dates{m} > time-$older;
     if ($older) {
       next if $older =~ /-/ and $day gt $older;
       next if $older !~ /-/ and $dates{m} > time-$older;
@@ -234,7 +234,7 @@ sub list {
       next if $newer =~ /-/ and $day lt $newer;
       next if $newer !~ /-/ and $dates{m} < time-$newer;
     }
       next if $newer =~ /-/ and $day lt $newer;
       next if $newer !~ /-/ and $dates{m} < time-$newer;
     }
-    
+
     if (defined $linkname) {
 
       # prepend sorting string
     if (defined $linkname) {
 
       # prepend sorting string
@@ -259,7 +259,7 @@ sub list {
            elsif ($i eq 'l') { $line .= sprintf '%3s ',   $links }
            elsif ($i eq 'i') { $line .= sprintf '%14s ',  $inode }
            elsif ($i eq 'd') { $line .= sprintf '%10s ',  $date }
            elsif ($i eq 'l') { $line .= sprintf '%3s ',   $links }
            elsif ($i eq 'i') { $line .= sprintf '%14s ',  $inode }
            elsif ($i eq 'd') { $line .= sprintf '%10s ',  $date }
-           elsif ($i eq 'a') { $line .= sprintf '%10s %10s %10s ', 
+           elsif ($i eq 'a') { $line .= sprintf '%10s %10s %10s ',
                                         $dates{'a'},$dates{'m'},$dates{'c'} }
          } else {
            if    ($i eq 'm') { $line .= $mode.' ' }
                                         $dates{'a'},$dates{'m'},$dates{'c'} }
          } else {
            if    ($i eq 'm') { $line .= $mode.' ' }
@@ -278,10 +278,10 @@ sub list {
                                         &isodate($dates{'c'}).' ' }
          }
        }
                                         &isodate($dates{'c'}).' ' }
          }
        }
-       
+
       # predefined formats
       } else {
       # predefined formats
       } else {
-      
+
        if ($opt_n) {
           if ($opt_l) { $line .= sprintf "%06o %6d %6d $z%15s %10d ",
                                         $mode,$uid,$gid,$size,$date }
        if ($opt_n) {
           if ($opt_l) { $line .= sprintf "%06o %6d %6d $z%15s %10d ",
                                         $mode,$uid,$gid,$size,$date }
@@ -293,25 +293,25 @@ sub list {
           else        { $line .= sprintf "%s $z%19s %s ",
                                         $mode,$size,substr($date,0,-3) }
         }
           else        { $line .= sprintf "%s $z%19s %s ",
                                         $mode,$size,substr($date,0,-3) }
         }
-       
+
        if ($opt_i)   { $line .= sprintf '%3s %10s ',$links,$inode }
       }
 
       $line .= $linkname."\n";
        if ($opt_i)   { $line .= sprintf '%3s %10s ',$links,$inode }
       }
 
       $line .= $linkname."\n";
-      
-      if ($postproc) { 
+
+      if ($postproc) {
         push @LIST,$line;
         push @LIST,$line;
-      } else { 
+      } else {
         $line =~ s/\0//;
         print $line;
       }
       $found++;
         $line =~ s/\0//;
         print $line;
       }
       $found++;
-      
+
     } else {
       lstat $file;
       warn "$0: cannot get dir-info for ".quote($file)." - $!\n";
     }
     } else {
       lstat $file;
       warn "$0: cannot get dir-info for ".quote($file)." - $!\n";
     }
-    
+
   }
 }
 
   }
 }
 
@@ -319,7 +319,7 @@ sub list {
 #
 # INPUT: file name
 #
 #
 # INPUT: file name
 #
-# OUTPUT: filename with linkname, inode, hard link count, size, mode string, 
+# OUTPUT: filename with linkname, inode, hard link count, size, mode string,
 #         UID, GID, isodate
 sub info {
   my $file = shift;
 #         UID, GID, isodate
 sub info {
   my $file = shift;
@@ -331,14 +331,14 @@ sub info {
 
   if ($opt_L) { @stat = stat $file }
   else        { @stat = lstat $file }
 
   if ($opt_L) { @stat = stat $file }
   else        { @stat = lstat $file }
-  
+
   if (@stat) {
   if (@stat) {
-  
+
     $inode = $stat[1];
     $bmode = $stat[2];
     $links = $stat[3];
     $inode = $stat[1];
     $bmode = $stat[2];
     $links = $stat[3];
-    %dates = ('m' => $stat[9], 
-              'a' => $stat[8], 
+    %dates = ('m' => $stat[9],
+              'a' => $stat[8],
              'c' => $stat[10]);
 
     if ($opt_n) {
              'c' => $stat[10]);
 
     if ($opt_n) {
@@ -350,7 +350,7 @@ sub info {
       $gid  = getgrgid($stat[5]) || $stat[5];
       $date = &isodate($dates{$sdf});
     }
       $gid  = getgrgid($stat[5]) || $stat[5];
       $date = &isodate($dates{$sdf});
     }
-    
+
     if    (-f _)           { $type = '-'; $size = $stat[7]; }
     elsif (!$opt_L && -l _) { $type = 'l'; }
     elsif (-d _)            { $type = 'd'; }
     if    (-f _)           { $type = '-'; $size = $stat[7]; }
     elsif (!$opt_L && -l _) { $type = 'l'; }
     elsif (-d _)            { $type = 'd'; }
@@ -376,7 +376,7 @@ sub info {
         $mode = $type.$mode;
       } else {
         # with short list display only effektive file access modes
         $mode = $type.$mode;
       } else {
         # with short list display only effektive file access modes
-        $mode = $type 
+        $mode = $type
                . (-r _ ? 'R' : '-')
                 . (-w _ ? 'W' : '-')
                 . (-x _ ? 'X' : '-');
                . (-r _ ? 'R' : '-')
                 . (-w _ ? 'W' : '-')
                 . (-x _ ? 'X' : '-');
@@ -406,7 +406,7 @@ sub info {
   }
 
   $size = &d3($size);
   }
 
   $size = &d3($size);
-  
+
   # determine longest size field
   if ($opt_z) {
     my $x = length $size;
   # determine longest size field
   if ($opt_z) {
     my $x = length $size;
@@ -421,7 +421,7 @@ sub info {
   }
   $mode =~ s/\+$//;
   #$mode .= ' ' unless $mode =~ /\+$/;
   }
   $mode =~ s/\+$//;
   #$mode .= ' ' unless $mode =~ /\+$/;
-  
+
   return ($linkname,$inode,$links,$size,$mode,$uid,$gid,$date,%dates);
 }
 
   return ($linkname,$inode,$links,$size,$mode,$uid,$gid,$date,%dates);
 }
 
@@ -453,22 +453,22 @@ sub getfiles {
 
   if (opendir D,$dir) {
     $dir = '' if $dir eq '.';
 
   if (opendir D,$dir) {
     $dir = '' if $dir eq '.';
-    while (defined($f = readdir D)) { 
-    
+    while (defined($f = readdir D)) {
+
       # skip . and .. pseudo-subdirs
       next if $f =~ m:(^|/)\.\.?/*$:;
       # skip ONTAP snapshot dir
       next if $f =~ m:(^|/)\.snapshot/*$:;
       # skip . and .. pseudo-subdirs
       next if $f =~ m:(^|/)\.\.?/*$:;
       # skip ONTAP snapshot dir
       next if $f =~ m:(^|/)\.snapshot/*$:;
-      
+
 
       # skip jed and emacs backup files
       # next if $f =~ /~$/ and not $opt_a and not $opt_l;
 
       # skip jed and emacs backup files
       # next if $f =~ /~$/ and not $opt_a and not $opt_l;
-      
+
       if ($f =~ /$opt_m/) {
         my $x = $dir.$f;
       if ($f =~ /$opt_m/) {
         my $x = $dir.$f;
-        if (not -l $x and -d $x and not ($opt_R or $postsort or $opt_U)) { 
+        if (not -l $x and -d $x and not ($opt_R or $postsort or $opt_U)) {
           push @dirs,$x;
           push @dirs,$x;
-        } else { 
+        } else {
           push @files,$x;
         }
       }
           push @files,$x;
         }
       }
@@ -481,7 +481,7 @@ sub getfiles {
   } else {
     warn "$0: cannot read $dir : $!\n";
   }
   } else {
     warn "$0: cannot read $dir : $!\n";
   }
-  
+
   return (@dirs,@files);
 }
 
   return (@dirs,@files);
 }
 
@@ -517,7 +517,7 @@ sub isodate {
 sub quote {
   local $_ = shift;
   my $mc = '\'\[\]\\\\ `"$?&<>$*()|{};';
 sub quote {
   local $_ = shift;
   my $mc = '\'\[\]\\\\ `"$?&<>$*()|{};';
-  
+
   unless (defined $_) {
     die "@_";
     @x = caller;
   unless (defined $_) {
     die "@_";
     @x = caller;
@@ -547,8 +547,8 @@ sub usage {
   my $status = shift;
   my $opts = '[-lastcuidnrzLRxNS*] [-f format] [-D X:Y]';
   local *OUT = $status ? *STDERR : *STDOUT;
   my $status = shift;
   my $opts = '[-lastcuidnrzLRxNS*] [-f format] [-D X:Y]';
   local *OUT = $status ? *STDERR : *STDOUT;
-  
-  if ($0 ne 'lf') { 
+
+  if ($0 ne 'lf') {
     print OUT "usage: $0 $opts [-F regexp] [file...]\n";
   }
   $opts =~ s/R//;
     print OUT "usage: $0 $opts [-F regexp] [file...]\n";
   }
   $opts =~ s/R//;
@@ -576,7 +576,7 @@ options: -l  long list (implicit if called 'll')
         -f  user defined format output, format characters are:
             m=mode, u=user, g=group, s=size, l=hard links count, i=inode
             n=name only, d=date, a=access+modification+inodechange dates
         -f  user defined format output, format characters are:
             m=mode, u=user, g=group, s=size, l=hard links count, i=inode
             n=name only, d=date, a=access+modification+inodechange dates
-         -D  list only files newer than X and older than Y 
+         -D  list only files newer than X and older than Y
              XY format: NUMBER[smhd] (s=seconds, m=minutes, h=hours, d=days)
              XY format: YYYY-MM-DD (Y=year, M=month, D=day)
          -E  show examples
              XY format: NUMBER[smhd] (s=seconds, m=minutes, h=hours, d=days)
              XY format: YYYY-MM-DD (Y=year, M=month, D=day)
          -E  show examples
@@ -588,7 +588,7 @@ sub examples {
   print <<EOD;
 l *.c            # list files ending with .c
 l -la            # list all files in long format
   print <<EOD;
 l *.c            # list files ending with .c
 l -la            # list all files in long format
-l -Rrs           # list files recursive reverse sorted by size 
+l -Rrs           # list files recursive reverse sorted by size
 l -*f mus        # list files native names with format: mode+user+size
 l -D 10d:        # list files newer than 10 days
 ll               # list files long format (equal to: l -l)
 l -*f mus        # list files native names with format: mode+user+size
 l -D 10d:        # list files newer than 10 days
 ll               # list files long format (equal to: l -l)