#!/usr/bin/perl
#
# Alle Manpages, die kein Verweis sind (also > $MIN_BYTES Bytes oder so),
# durch gzip -9 schicken.
#

$ENV{'PATH'}="/bin:/usr/bin";
$old_dir=`pwd`;
($name=$0) =~ s#.*/##;  # get basename from $0

$MIN_BYTES=200;
$count=0;
$all_size=0;

format STDOUT =
         zippe Datei @<<<<<<<<<<<<  mit @||||||| Bytes
$_ $t
.


sub filesize		# return filesize of 1. parameter
{
 my ($F)=@_;
 (stat($F))[7];
}

sub zip_dir		# zip files in dir
{
 my ($D)=@_;
 my $a=0;
 chdir $D or die "Kann nicht in Verzeichnis $D wechseln: $!\n";
 print "     Bearbeite Unterverzeichnis:  [$D]\n";
 @FILES=<*>;
 foreach (@FILES)
 {
  unless ( /\.gz$/ )
  {
    if ( ($t=&filesize($_)) > $MIN_BYTES)
     {
      print "\n" unless ($a==1); $a=1;
      write;	# write using FORMAT
      system "gzip", "-f9", $_;
      $count++; $all_size+=$t;
     }
  }
 }
 print "\n" if ($a);
 chdir "..";
}


# main()

print "\n          $name: alle Man- & Cat-Pages mit gzip -9 packen .\n";
print "\n          (falls >$MIN_BYTES Byte)\n\n\n";

@MANPATH=("/usr/man/de","/usr/man","/usr/X11R6/man","/usr/TeX/man","/usr/local/man",
	  "/usr/openwin/man","/usr/man/preformat","/usr/tex-local/man","/usr/lib/perl5/man");

foreach $P (@MANPATH)
{
 print "\nBearbeite Man-Dir $P\n\n";
 chdir $P;
 @ALL=<*>;
 foreach (@ALL)
  { &zip_dir($_) if (-d $_ && /(cat.)|(man.)/ ) }	# falls dir -> zip it
}

print "\nZipped $count files with $all_size bytes at all.\n\nEnd of cronjob.\n";
chdir $old_dir;