[pve-devel] [pve-zsync 1/2] fix cut_taget_width
Wolfgang Link
w.link at proxmox.com
Tue Jan 10 10:56:51 CET 2017
---
pve-zsync | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/pve-zsync b/pve-zsync
index 194eabf..8bd437e 100644
--- a/pve-zsync
+++ b/pve-zsync
@@ -72,19 +72,26 @@ sub check_bin {
sub cut_target_width {
my ($target, $max) = @_;
+ die "mim length is 5\n" if $max < 5;
+
return $target if (length($target) <= $max);
my @spl = split('/', $target);
- my $count = length($spl[@spl-1]);
- return "..\/".substr($spl[@spl-1],($count-$max)+3 , $count) if $count > $max;
+ my $length = length($spl[@spl - 1]);
+ return "..\/".substr($spl[@spl - 1],($length - $max) + 3 , $length)
+ if $length + 3 >= $max;
+
+ $length += length($spl[1]) if @spl > 2;
+
+ return "\/".substr($spl[1], 0, ($max - 4) - length($spl[@spl - 1])).
+ "..\/".$spl[@spl - 1] if $length + 4 >= $max;
- $count += length($spl[0]) if @spl > 1;
- return substr($spl[0], 0, $max-4-length($spl[@spl-1]))."\/..\/".$spl[@spl-1] if $count > $max;
+ return "\/".substr($spl[1], 0, ($max - 5) - length($spl[@spl - 1])).
+ "\/..\/".$spl[@spl - 1] if $length + 5 >= $max;
- my $rest = 1;
- $rest = $max-$count if ($max-$count > 0);
+ my $rest = $max - $length;
- return "$spl[0]".substr($target, length($spl[0]), $rest)."..\/".$spl[@spl-1];
+ return "\/$spl[1]\/".substr($target, length($spl[2]), $rest)."..\/".$spl[@spl-1];
}
sub lock {
--
2.1.4
More information about the pve-devel
mailing list