{ # vim: ft=perl

sub trim($)
	{
	my $s=shift;
	$s=~s/^\s+//;
	$s=~s/\s+$//;
	return $s;
	}

$OUT = "\n# /home/e-smith/db/affa not found\n";
my $affa = esmith::DB::db->open("/home/e-smith/db/affa");
return unless $affa;

my %all = $affa->as_hash();

$OUT = '';
if( ($all{"AffaGlobalDisable"}->{'type'}||'no') eq 'yes' )
	{
	$OUT .= "\n# all jobs are disabled by AffaGlobalDisable=yes\n";
	return;
	}

my $defaults = $affa->get('DefaultAffaConfig');
my %defaultprops = $defaults->props;

foreach my $k( reverse sort keys %all )
	{
	my $v=$all{$k};
	my $status = $v->{'status'} || $defaultprops{'status'} || 'enabled';
	next if $v->{'type'} ne 'job';
	next if $k =~ /AFFA\.[a-z][a-z0-9\-]*\..*-\d*\.\d*\.\d*\.\d*/; # own backup
	$OUT .= "\n# Job '$k' is $status, ". ($v->{'remoteHostName'}||'localhost') . ($v->{'Description'} ? ", $v->{'Description'}" : "" ) . "\n";
	next if $status ne 'enabled';
	my @u = split(",", ($v->{'TimeSchedule'}||$defaultprops{'TimeSchedule'}||''));
	my @s; 
	foreach my $z (sort @u)
		{
		$z=trim($z);
		push( @s, $z ) if( length( $z) == 4  and $z == sprintf( "%04d", int($z) ) );
		}

	@u = sort { $a <=> $b } @s;

	my $done=0;
	for( my $i=0; $i<@u; $i++ )
		{
		$z=$u[$i];
		my $hour = substr( $z, 0, 2 );
		my $minute = substr( $z, 2, 2 );
		my $next=$u[ ( $i<@u-1 ? $i+1 : 0 ) ];
		my $nexthour = substr( $next, 0, 2 );
		my $nextminute = substr( $next, 2, 2 );
		my $nwd = ($nexthour*3600+$nextminute*60)-($hour*3600+$minute*60);
		$nwd = 86400+$nwd if $nwd<=0;
		$OUT .= "$minute $hour * * * root  /sbin/e-smith/affa --watchdog=$nwd --run $k\n";
		$done++;
		}
	$OUT .= "# no valid TimeSchedule found!" if not $done;
	$OUT .= "\n";
	}
}
