print "\n";
+sub skip($) {
+ my $msg = shift;
+ print "WARNING: $msg, skipping...\n";
+ goto SKIP;
+}
+
+my $sth_archive_backup = $dbh->prepare( qq{
+ select
+ backup_id,
+ hosts.name as host,
+ shares.name as share,
+ backups.num as num
+ from archive_backup
+ join archive on archive_id = archive.id
+ join backups on backup_id = backups.id
+ join hosts on hostid = hosts.id
+ join shares on shareid = shares.id
+ where archive.dvd_nr = ?
+});
+
foreach my $arc (@archives_to_burn) {
exit if ($arc eq ']quit[');
my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/);
die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr);
- print "Working on DVD #$dvd_nr\n";
+ my $tmp_dir = "/$iso_dir/$dvd_nr";
+
+ my $t = time();
+
+ print "Working on DVD #$dvd_nr in $tmp_dir\n";
+
+ my $iso_file = "${iso_dir}/${dvd_nr}.iso";
+
+ skip "ISO $iso_file allready exists" if (-e $iso_file);
+
+ $sth_archive_backup->execute($dvd_nr);
+
+ print "Running mkisofs now...\n";
+
+ my $cmd = qq{ mkisofs -A BackupPC -gui -J -r -T --input-charset ISO-8859-2 -V $dvd_nr -o $iso_file -path-list - };
+
+ open(my $mkisofs, "| $cmd 2>&1") || skip "can't run $cmd: $!";
+
+ while (my $row = $sth_archive_backup->fetchrow_hashref) {
+ my $tar_file = BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'});
+ skip "can't find increment $tar_file: $!" unless (-r "$tar_dir/$tar_file");
+ print $mkisofs "$tar_dir/$tar_file\n";
+ }
+
+ while(! -e $iso_file) {
+ sleep 1;
+ }
+
+ print "Created $iso_file in ", fmt_time(time() - $t), "\n";
+
+SKIP:
}