#!/usr/bin/perl


if (@ARGV == 1)
{
  open (CTF, "$ARGV[0]") or die "Cannot open crontab for $ARGV[0]:$!";
  @lines = <CTF>;

  print "<html><head><title>Listing Cronjobs</title><body><pre>";

  foreach $line (@lines)
  {
     if (index($line, '#') != 0)
     {
        chomp $line;
        (@fields) = split /\s+/,$line ;
        if ($fields[3] eq '*')
        {
           $months='1';
           for ($lcnt=2;$lcnt<13;$lcnt++)
           {
              $months .= ",$lcnt";
           }
        } else {
           $months=$fields[3];
        }
        if ($fields[2] eq '*')
        {
           $days='1';
           for ($lcnt=2;$lcnt<31;$lcnt++)
           {
              $days .= ",$lcnt";
           }
        } else {
          $days=$fields[2];
        }
        if ($fields[1] eq '*')
        {
           $hours='0';
           for ($lcnt=1;$lcnt<24;$lcnt++)
           {
              $hours .= ",$lcnt";
           }
        } else {
           $hours=$fields[1];
        }
        if ($fields[0] eq '*')
        {
           $mins='0';
           for ($lcnt=1;$lcnt<60;$lcnt++)
           {
              $mins .= ",$lcnt";
           }
        } else {
           $mins=$fields[0];
        }
        $cmd = $fields[5];
        $cmd .= ' ' . $fields[6] if defined $fields[6];
        $cmd .= ' ' . $fields[7] if defined $fields[7];
        $cmd .= ' ' . $fields[8] if defined $fields[8];
        $cmd .= ' ' . $fields[9] if defined $fields[9];
        $cmd .= ' ' . $fields[10] if defined $fields[10];
        $cmd .= ' ' . $fields[11] if defined $fields[11];
        (@mons) = split /,/,$months;
        foreach $mon (@mons)
        {
          (@doms) = split /,/,$days;
          foreach $dom (@doms)
          {
             (@hrs) = split /,/,$hours;
             foreach $hr (@hrs)
            {
              (@mns) = split /,/,$mins;
              foreach $mn (@mns)
              {
                $hkey = sprintf "%02d%02d%02d%02d",$mon, $dom, $hr, $mn;
 

                if (exists $event{$hkey})
                {
                    $event_val{$hkey} .= sprintf "%s-%02d-%02d %02d:%02d:00  %s\n", ((localtime)[5]+1900), $mon, $dom, $hr, $mn, $cmd;
                } else {
                    $event_val{$hkey} = sprintf "%s-%02d-%02d %02d:%02d:00  %s\n", ((localtime)[5]+1900), $mon, $dom, $hr, $mn, $cmd;
                }
              }
            }
          }
        }
     }
  }
 
  @keys = sort { $a cmp $b } keys %event_val;  

  foreach $key (@keys) {  
      printf "%s", $event_val{$key};
  }

  print "</pre></body></html>";
} else {
  print "You must specify a crontab file\n$0 crontabfile\n"; }

exit;