sub toRelativePath($$)
{
my ($path, $prefix) = @_;
$path = toUnixPath($path);
$prefix = toUnixPath($prefix);
$prefix .= '/' if (substr($prefix, -1) ne '/');
$path =~ s/$prefix//;
return toDosPath($path);
}
#-- unit tests
sub test_torelativepath()
{
ut::assert(toRelativePath("c:/bin/bob", "c:/bin"), 'bob');
ut::assert(toRelativePath("c:/bin/bob", "c:/bin/"), 'bob');
ut::assert(toRelativePath("c:/bin/bob", "c:\\bin\\"), 'bob');
ut::assert(toRelativePath("c:/bin/bob/", "c:/bin"), 'bob\\');
ut::assert(toRelativePath("c:/bin/bob/", "c:/bin/"), 'bob\\');
ut::assert(toRelativePath("c:/bin/bob/", "c:\\bin\\"), 'bob\\');
ut::assert(toRelativePath("c:/bin/billy/bob", "c:\\bin\\"), 'billy\\bob');
ut::assert(toRelativePath("c:/bin/billy/bob/", "c:\\bin\\"), 'billy\\bob\\');
ut::assert(toRelativePath("c:/bin/billy/bob", "c:\\"), 'bin\\billy\\bob');
ut::assert(toRelativePath("c:/bin/billy/bob/", "c:/"), 'bin\\billy\\bob\\');
ut::assert(toRelativePath("c:\\bin/billy/bob", "c:\\"), 'bin\\billy\\bob');
ut::assert(toRelativePath("c:\\bin/billy/bob/", "c:/"), 'bin\\billy\\bob\\');
}
1;
|