use Data::Dumper;
my $debug = 0;
+# set this to 1 to prompt for DVD removal for each selected item.
+my $prompt_for_delete = 0;
$|=1;
# don't check for user
symlink $from, $to || skip("can't symlink $from to $to: $!");
}
+sub delete_dvd($) {
+ my $dvd_nr = shift || return;
+
+ print "Do you want to delete DVD #$dvd_nr now? [NO/yes]: ";
+ my $ok = <STDIN>;
+ chomp($ok);
+ if (lc($ok) eq 'yes') {
+ print "Deleting DVD #$dvd_nr from database...\n";
+
+ $dbh->begin_work;
+
+ my $sth_delete_dvd = $dbh->prepare( qq{
+ delete from archive where dvd_nr = ?
+ } );
+ $sth_delete_dvd->execute( $dvd_nr );
+ $dbh->do( qq{
+ select setval('dvd_nr', (select max(dvd_nr) from archive), true)
+ } );
+
+ # remove files for this DVD
+ map {
+ print "\tremoving $_\n";
+ unlink($_) || die "can't rm $_: $!";
+ } glob ( "/$iso_dir/$dvd_nr.*" );
+
+ $dbh->commit;
+
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
my $sth_archive_backup_parts = $dbh->prepare( qq{
select
archive_backup.backup_id,
if ($sth_archive_backup_parts->rows == 0) {
warn "ERROR: no backup parts found for $dvd_nr. You should re-create that DVD.\n";
- print "Do you want to delete invalid DVD #$dvd_nr now? [NO/yes]: ";
- my $ok = <STDIN>;
- chomp($ok);
- if (lc($ok) eq 'yes') {
- print "Deleting DVD #$dvd_nr from database...\n";
-
- $dbh->begin_work;
-
- my $sth_delete_dvd = $dbh->prepare( qq{
- delete from archive where dvd_nr = ?
- } );
- $sth_delete_dvd->execute( $dvd_nr );
- $dbh->do( qq{
- select setval('dvd_nr', (select max(dvd_nr) from archive), true)
- } );
-
- $dbh->commit;
- }
+ delete_dvd( $dvd_nr );
+ }
+
+ if ($prompt_for_delete) {
+ next if delete_dvd( $dvd_nr );
}
my @volumes;
my $iso_size = 0;
my $disk_name = $dvd_nr;
# suffix added to multi-volume archives
- my $volume_suffix = $dvd_nr;
+ my $volume_suffix = '';
if ($volumes > 1) {
$volume_suffix = '_' . $volume_nr;