#!/usr/bin/perl

sub get_file
{
	my @array=sort {-M $a <=> -M$b} (<$_[0]>);
	foreach (@array)
	{
		if (-z $_)
		{
			warn "File: $_ has zero size\n";
		}
		else
		{
			return $_;
		}
	}
	return undef;
}

sub cleanup
{
	return  scalar (@_) < 1;
	print "Removing Files:\n",join("\n",@_),"\n";
	unlink @_;
}

use File::Basename;
use strict;

my @files=(	'/home/devel/devel*.tgz',
		'/home/nexus/nexus*.tgz',
		'/home/sun/sun*.tgz',
		'/home/wopr/wopr*.tgz',
		'/home/wopr/home*.tgz',
		'/home/eric/VMs*.tgz',
		'/home/backup/backup*.tgz');
my $dvddrive='/dev/cdrom';

my $maxsize=4700;
my @list=();
my @tmp=();
foreach my $file (@files)
{
	my $filename=get_file($file);
	my $temp=int((-s $filename)/1000000);
        if ( $temp > 2000)
        {
                warn "Warning: $filename exceeds 2gb limit ($temp mb)\n";
		my $split='/tmp/' . basename($filename) . '*';
		unlink (glob($split));
		my $command='split --verbose -b 2000m ' . $filename . ' /tmp/' . basename($filename);
		`$command`;
		push (@list,glob($split));
		push (@tmp,glob($split));
	}
	else
	{
		push (@list,$filename);
	}
}

my $size=0;
foreach (@list)
{
	$size+=-s $_;
}	
$size=int $size/1000000;

print "Total Size: $size Mb\n";
print "Max Size:   $maxsize Mb\n\n";

if ($size > $maxsize)
{
	cleanup(@tmp);
	die "Data is too big to fit on DVD\n";
}

#dev/tty13 is a dirty trick to make it work in cron
my $command='growisofs -Z /dev/cdrom -R -J -quiet ' . join(' ',@list) . '  < /dev/tty13';
system ($command);
cleanup(@tmp);

