--- trunk/bin/BackupPC_burnArchiveCLI 2006/03/01 12:11:23 335 +++ trunk/bin/BackupPC_burnArchiveCLI 2006/03/01 13:04:03 337 @@ -332,71 +332,71 @@ values ( (select id from archive where dvd_nr =?), ?, ?, ?) }); -foreach my $arc (@archives_to_burn) { - exit if ($arc eq ']quit['); +my $copies = $Conf{BurnMultipleCopies} || 1; - my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/); - die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr); +foreach my $copy_nr ( 1 .. $copies ) { - my $tmp_dir = "/$iso_dir/$dvd_nr"; + foreach my $arc (@archives_to_burn) { + exit if ($arc eq ']quit['); - my $t = time(); + 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 in $tmp_dir\n"; + my $tmp_dir = "/$iso_dir/$dvd_nr"; - $sth_archive_backup_parts->execute($dvd_nr); + my $t = time(); - $sth_archive_backup_check->execute($dvd_nr); + print "Working on DVD #$dvd_nr in $tmp_dir\n"; - my ($parts_nr, $check_nr) = ($sth_archive_backup_parts->rows, $sth_archive_backup_check->fetchrow_array); + $sth_archive_backup_parts->execute($dvd_nr); - if ($parts_nr != $check_nr) { - warn "ERROR: DVD #$dvd_nr is still not inconsistent state. Some backup parts are ", - ($parts_nr < $check_nr) ? "missing ($parts_nr < $check_nr)" : "extra ($parts_nr > $check_nr)", - " you should re-create this DVD after BackupPC_incPartsUpdate finish\n"; - delete_dvd( $dvd_nr ); - next; - } - - if ($sth_archive_backup_parts->rows == 0) { - warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n"; - next if delete_dvd( $dvd_nr ); - } + $sth_archive_backup_check->execute($dvd_nr); - if ($prompt_for_delete) { - next if delete_dvd( $dvd_nr ); - } + my ($parts_nr, $check_nr) = ($sth_archive_backup_parts->rows, $sth_archive_backup_check->fetchrow_array); - my @volumes; - my $v; # emtpy volume - my $v_size = 0; - - my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize"; - while (my $row = $sth_archive_backup_parts->fetchrow_hashref) { - if (($v->{size} || 0) + $row->{part_size} > $max_archive_size) { - push @volumes, $v; - $v = {}; + if ($parts_nr != $check_nr) { + warn "ERROR: DVD #$dvd_nr is still not inconsistent state. Some backup parts are ", + ($parts_nr < $check_nr) ? "missing ($parts_nr < $check_nr)" : "extra ($parts_nr > $check_nr)", + " you should re-create this DVD after BackupPC_incPartsUpdate finish\n"; + delete_dvd( $dvd_nr ); + next; } - $v->{size} += $row->{part_size}; - # this part - my $p = { - filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}), - }; - foreach my $fld (qw/part_nr md5/) { - $p->{$fld} = $row->{$fld} || die "missing $fld in row!"; + + if ($sth_archive_backup_parts->rows == 0) { + warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n"; + next if delete_dvd( $dvd_nr ); } - push @{ $v->{parts} }, $p; - } - push @volumes, $v if ($v); - #warn "# volumes: ",Dumper(\@volumes),"\n"; + if ($prompt_for_delete) { + next if delete_dvd( $dvd_nr ); + } - my $volumes = $#volumes + 1; - my $volume_nr = 1; + my @volumes; + my $v; # emtpy volume + my $v_size = 0; + + my $max_archive_size = $Conf{MaxArchiveSize} || die "no MaxArchiveSize"; + while (my $row = $sth_archive_backup_parts->fetchrow_hashref) { + if (($v->{size} || 0) + $row->{part_size} > $max_archive_size) { + push @volumes, $v; + $v = {}; + } + $v->{size} += $row->{part_size}; + # this part + my $p = { + filename => BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}), + }; + foreach my $fld (qw/part_nr md5/) { + $p->{$fld} = $row->{$fld} || die "missing $fld in row!"; + } + push @{ $v->{parts} }, $p; + } + push @volumes, $v if ($v); - my $copies = $Conf{BurnMultipleCopies} || 1; + #warn "# volumes: ",Dumper(\@volumes),"\n"; - foreach my $copy_nr ( 1 .. $copies ) { + my $volumes = $#volumes + 1; + my $volume_nr = 1; foreach my $v (@volumes) { @@ -490,7 +490,8 @@ rmtree($stage) || warn "can't remove stage directory $stage: $!"; } else { - print "ISO $iso_file allready exists\n"; + $iso_size = (stat($iso_file))[7]; + print "ISO $iso_file allready exists [$iso_size bytes]\n"; } print "\nREADY TO BURN MEDIA $disk_name copy $copy_nr\n\nPlease insert blank media and press ENTER\n\n"; @@ -510,9 +511,10 @@ $sth_archive_burned->execute($dvd_nr, $iso_size, $volume_nr, $copy_nr); print "Media burn for $disk_name copy $copy_nr recorded\n"; + + $volume_nr++; } - $volume_nr++; } SKIP: