Hello,
I have had similar problems to other users related to mounting the DVD
before copying IFO files. Typical error messages in the log file were
"WARNING: no IFO files found - vobsub feature disabled."
or
"Umount {mount_point}: Usage: umount [-hV]
umount -a [-f] [-r] [-n] [-v] [-t vfstypes] [-O opts]
umount [-f] [-r] [-n] [-v] special | node..."
when trying to umount some bogus directory.
I traced the issue to faulty code in Project.pm, where symbolic link
mount points in /etc/fstab are not properly resolved. Attached is a
patch to Project.pm with a suggested fix. Comments welcome!
Cheers,
Daniel
*** Project.pm 2007-03-10 10:55:35.000000000 +0100
--- /usr/share/perl5/Video/DVDRip/Project.pm 2009-09-24 07:31:39.000000000
+0200
***************
*** 328,334 ****
require File::Spec;
! my %symlinks = ( $file => 1 );
while ( -l $file ) {
my $link_target = readlink($file);
--- 328,334 ----
require File::Spec;
! my $symlinks = $file;
while ( -l $file ) {
my $link_target = readlink($file);
***************
*** 339,363 ****
else {
$file = $link_target;
}
! $symlinks{$file} = 1;
}
! return \%symlinks;
}
sub get_mount_dir_from_mtab {
my $self = shift;
my ( $dvd_device, $mtab_file ) = @_;
! my $symlinks_href = $self->resolve_symlinks($dvd_device);
!
open( my $fh, $mtab_file )
or die "can't read $mtab_file";
my $mount_dir;
! while ( my $line = <$fh> ) {
! my ( $device, $dir ) = split( /\s+/, $line );
! if ( $symlinks_href->{$device} ) {
$mount_dir = $dir;
last;
}
--- 339,369 ----
else {
$file = $link_target;
}
! $symlinks = $file;
}
! return $symlinks;
}
sub get_mount_dir_from_mtab {
my $self = shift;
my ( $dvd_device, $mtab_file ) = @_;
! my $device_href = $self->resolve_symlinks($dvd_device);
!
open( my $fh, $mtab_file )
or die "can't read $mtab_file";
my $mount_dir;
! my $line;
! my $mtab_device;
! my $dir;
! my $mtab_device_href;
!
! while ($line = <$fh> ) {
! ( $mtab_device, $dir ) = split( /\s+/, $line );
! $mtab_device_href = $self->resolve_symlinks($mtab_device);
! if ( $mtab_device_href eq $device_href ) {
$mount_dir = $dir;
last;
}
***************
*** 441,447 ****
my $dvd_mount_point = $self->dvd_mount_point;
$self->log(
! __x("Mounting DVD at {mount_point}",
mount_point => $dvd_mount_point
)
);
--- 447,453 ----
my $dvd_mount_point = $self->dvd_mount_point;
$self->log(
! __x("DVD does not appear to be mounted, mounting DVD at
'$dvd_mount_point'",
mount_point => $dvd_mount_point
)
);
***************
*** 473,479 ****
$mount ||= "Ok";
$self->log(
! __x( "Umount {mount_point}: ", mount_point => $dvd_mount_point )
. $mount );
1;
--- 479,485 ----
$mount ||= "Ok";
$self->log(
! __x( "Umount '$dvd_mount_point': ", mount_point => $dvd_mount_point )
. $mount );
1;
|