X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/dff53f21c8fccc7585f785fec893a5773e78a1b6..0fb9dcffcc2a1be81de150bae084e195c5f66658:/modules/Tool.pm?ds=inline diff --git a/modules/Tool.pm b/modules/Tool.pm index dc11571..0b1159d 100644 --- a/modules/Tool.pm +++ b/modules/Tool.pm @@ -6,7 +6,7 @@ package Tool; # Some shared sub routines # # Author: Patrick Canterino -# Last modified: 2005-01-06 +# Last modified: 2005-01-07 # use strict; @@ -61,9 +61,32 @@ sub check_path($$) # We extract the last part of the path and create the absolute path my $first = upper_path($path); + $first = abs_path($first); + my $last = file_name($path); + $last = '' if($last eq '.'); + + if($last eq '..') + { + $first = upper_path($first); + $last = ''; + } + elsif($^O eq 'MSWin32' && $last =~ m!^\.\.\.+$!) + { + # Windows allows to go upwards in a path using things like + # "..." and "...." and so on + + for(my $x=0;$xcanonpath($first); @@ -72,7 +95,6 @@ sub check_path($$) # Check if the path is above the root directory return if(index($path,$root) != 0); - return if($first eq $root && ($last eq '..' || ($^O eq 'MSWin32' && $last =~ m!^\.\.+$!))); # Create short path name