correctly handle the stow/target directories as non-canonical paths

Fix the case discovered by Hiroyuki Iwatsuki where stowing fails if
the stow / target directories are non-canonical paths.  For example,
on FreeBSD /home is a symlink pointing to 'usr/home', so running with
the stow directory as /home/user/local/stow and the target directory
as /home/user/local previously resulted in the stow directory path
being calculated as ../../../usr/home/user/local/stow relative to
the target.

http://article.gmane.org/gmane.comp.gnu.stow.bugs/8820
This commit is contained in:
Adam Spiers 2013-04-12 17:47:29 +01:00
parent fe5b658803
commit c500216f20

View file

@ -185,11 +185,11 @@ sub set_stow_dir {
} }
my $stow_dir = canon_path($self->{dir}); my $stow_dir = canon_path($self->{dir});
my $target = canon_path($self->{target});
$self->{stow_path} = File::Spec->abs2rel($stow_dir, $self->{target}); $self->{stow_path} = File::Spec->abs2rel($stow_dir, $target);
debug(2, "stow dir is $stow_dir"); debug(2, "stow dir is $stow_dir");
debug(2, "stow dir path relative to target $self->{target} is $self->{stow_path}"); debug(2, "stow dir path relative to target $target is $self->{stow_path}");
} }
sub init_state { sub init_state {