rewrite fixPaths()

now the phonon paths are actually normalized.
just relying on File::Spec for the path relativization, so the code is
much shorter.

Change-Id: I69d6bac73e366ed0f754e1282a375871ce5559c4
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
This commit is contained in:
Oswald Buddenhagen 2012-04-25 14:29:58 +02:00
parent 800aef3424
commit c98b223567

View File

@ -47,6 +47,7 @@
# use packages -------------------------------------------------------
use File::Basename;
use File::Path;
use File::Spec;
use Cwd;
use Cwd 'abs_path';
use Config;
@ -391,50 +392,20 @@ sub syncHeader {
# Purpose: file is made relative (if possible) of dir.
# Returns: String with the above applied conversion.
######################################################################
sub cleanupPath {
my ($file) = @_;
normalizePath(\$file);
while ($file =~ s,/[^/]+/\.\./,/,) {}
return $file;
}
sub fixPaths {
my ($file, $dir) = @_;
normalizePath(\$file);
normalizePath(\$dir);
#setup
my $ret = $file;
$ret =~ s,/cygdrive/([a-zA-Z])/,$1:/,g;
my $file_dir = dirname($file);
if($file_dir eq ".") {
$file_dir = getcwd();
normalizePath(\$file_dir);
}
$file_dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g;
if($dir eq ".") {
$dir = getcwd();
normalizePath(\$dir);
}
$dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g;
return basename($file) if($file_dir eq $dir);
#guts
while ($file_dir =~ s,/[^/]+/\.\./,/,) {}
while ($dir =~ s,/[^/]+/\.\./,/,) {}
my $match_dir = 0;
for(my $i = 1; $i < length($file_dir); $i++) {
my $slash = index($file_dir, "/", $i);
last if($slash == -1);
my $tmp = substr($file_dir, 0, $slash);
last unless($dir =~ m,^\Q$tmp\E/,);
$match_dir = $tmp;
$i = $slash;
}
if($match_dir) {
my $after = substr($dir, length($match_dir));
my $count = ($after =~ tr,/,,);
my $dots = "";
for(my $i = 0; $i < $count; $i++) {
$dots .= "../";
}
$ret =~ s,^\Q$match_dir\E,$dots,;
}
$ret =~ s,/+,/,g;
return $ret;
my $out = File::Spec->abs2rel(cleanupPath($file), cleanupPath($dir));
$out =~ s,\\,/,g;
return $out;
}
######################################################################