From c500216f20b081fae0799253d1d86536d48ff6ba Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Fri, 12 Apr 2013 17:47:29 +0100 Subject: [PATCH] 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 --- lib/Stow.pm.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Stow.pm.in b/lib/Stow.pm.in index 931740f..98ecf35 100755 --- a/lib/Stow.pm.in +++ b/lib/Stow.pm.in @@ -185,11 +185,11 @@ sub set_stow_dir { } my $stow_dir = canon_path($self->{dir}); - - $self->{stow_path} = File::Spec->abs2rel($stow_dir, $self->{target}); + my $target = canon_path($self->{target}); + $self->{stow_path} = File::Spec->abs2rel($stow_dir, $target); 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 {