summaryrefslogtreecommitdiff
path: root/dh_link
diff options
context:
space:
mode:
authorjoeyh <joeyh>2006-01-08 04:13:06 +0000
committerjoeyh <joeyh>2006-01-08 04:13:06 +0000
commitc5d64a7f9b1db4e98aff95c237342a793e40c6f5 (patch)
treef4565308ae0a0b8b8b1060b09571cbd4db28f762 /dh_link
parentbb4488a4f39bd51224957a7d512e15bbbe6adc7f (diff)
r1843: * dh_link: add special case handling for paths to a directory containing the
link. Closes: #346405 * dh_link: add special case handling for link to /
Diffstat (limited to 'dh_link')
-rwxr-xr-xdh_link10
1 files changed, 8 insertions, 2 deletions
diff --git a/dh_link b/dh_link
index 5dd9da3..a56eefb 100755
--- a/dh_link
+++ b/dh_link
@@ -105,6 +105,9 @@ sub expand_path {
foreach $entry (@respath) {
$result .= '/' . $entry;
}
+ if (! defined $result) {
+ $result="/"; # special case
+ }
return $result;
}
@@ -175,11 +178,11 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
# top level directories, leave it absolute.
my @src_dirs=split(m:/+:,$src);
my @dest_dirs=split(m:/+:,$dest);
- if ($src_dirs[0] eq $dest_dirs[0]) {
+ if (@src_dirs > 0 && $src_dirs[0] eq $dest_dirs[0]) {
# Figure out how much of a path $src and $dest
# share in common.
my $x;
- for ($x=0; $x<$#src_dirs && $src_dirs[$x] eq $dest_dirs[$x]; $x++) {}
+ for ($x=0; $x<@src_dirs && $src_dirs[$x] eq $dest_dirs[$x]; $x++) {}
# Build up the new src.
$src="";
for (1..$#dest_dirs - $x) {
@@ -188,6 +191,9 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
for ($x .. $#src_dirs) {
$src.=$src_dirs[$_]."/";
}
+ if ($x > $#src_dirs && ! length $src) {
+ $src.="."; # special case
+ }
$src=~s:/$::;
}
else {