git.p6c8.net
/
devedit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
file_read() is now able to open a file in binary mode (maybe we will need it)
[devedit.git]
/
modules
/
Tool.pm
diff --git
a/modules/Tool.pm
b/modules/Tool.pm
index e3056c590ee39fa929eafaa62751e7ea522504e4..2347445b267fc84df46a578c5d101aace39e7eca 100644
(file)
--- a/
modules/Tool.pm
+++ b/
modules/Tool.pm
@@
-6,7
+6,7
@@
package Tool;
# Some shared sub routines
#
# Author: Patrick Canterino <patrick@patshaping.de>
# Some shared sub routines
#
# Author: Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2005-01-0
6
+# Last modified: 2005-01-0
8
#
use strict;
#
use strict;
@@
-61,18
+61,22
@@
sub check_path($$)
# We extract the last part of the path and create the absolute path
my $first = upper_path($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);
my $last = file_name($path);
+ $last = '' if($last eq '.');
- $first = abs_path($first);
- $path = $first.'/'.$last;
+ if($last eq '..' || ($^O eq 'MSWin32' && $last =~ m!^\.\.\.+$!))
+ {
+ $first = abs_path($first.'/'.$last);
+ $last = '';
+ }
- $first = File::Spec->canonpath($first);
- $path = File::Spec->canonpath($path);
+ $path = File::Spec->canonpath($first.'/'.$last);
# Check if the path is above the root directory
return if(index($path,$root) != 0);
# Check if the path is above the root directory
return if(index($path,$root) != 0);
- return if($first eq $root && $last =~ m!^(/|\\)?\.\.(/|\\)?$!);
# Create short path name
# Create short path name
@@
-219,7
+223,7
@@
sub file_name($)
my $path = shift;
$path =~ tr!\\!/!;
my $path = shift;
$path =~ tr!\\!/!;
- unless($path
eq '/'
)
+ unless($path
=~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!)
)
{
$path =~ s!/+$!!;
$path = substr($path,rindex($path,'/')+1);
{
$path =~ s!/+$!!;
$path = substr($path,rindex($path,'/')+1);
@@
-268,7
+272,8
@@
sub mode_string($)
# upper_path()
#
# upper_path()
#
-# Cut away the last part of a path
+# Remove the last part of a path
+# (the resulting path contains a trailing slash)
#
# Params: Path
#
#
# Params: Path
#
@@
-279,7
+284,7
@@
sub upper_path($)
my $path = shift;
$path =~ tr!\\!/!;
my $path = shift;
$path =~ tr!\\!/!;
- unless($path
eq '/'
)
+ unless($path
=~ m!^/+$! || ($^O eq 'MSWin32' && $path =~ m!^[a-z]:/+$!)
)
{
$path =~ s!/+$!!;
$path = substr($path,0,rindex($path,'/')+1);
{
$path =~ s!/+$!!;
$path = substr($path,0,rindex($path,'/')+1);
patrick-canterino.de