From e8c13610c4196f895efeabaf20f5ec8afccf6ae0 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Mon, 11 Sep 2017 09:20:08 +0200 Subject: [PATCH] tools: df: handle a failing df This function assumed df() will work or hang, but it can also actually fail and return undef which results in warnings - let's silence those. --- src/PVE/Tools.pm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm index 3080b3e..bd99914 100644 --- a/src/PVE/Tools.pm +++ b/src/PVE/Tools.pm @@ -983,7 +983,8 @@ sub df { $pipe->writer(); eval { my $df = Filesys::Df::df($path, 1); - print {$pipe} "$df->{blocks}\n$df->{used}\n$df->{bavail}\n"; + print {$pipe} "$df->{blocks}\n$df->{used}\n$df->{bavail}\n" + if defined($df); $pipe->close(); }; if (my $err = $@) { @@ -996,9 +997,9 @@ sub df { $pipe->reader(); my $readvalues = sub { - $res->{total} = int((<$pipe> =~ /^(\d*)$/)[0]); - $res->{used} = int((<$pipe> =~ /^(\d*)$/)[0]); - $res->{avail} = int((<$pipe> =~ /^(\d*)$/)[0]); + $res->{total} = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]); + $res->{used} = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]); + $res->{avail} = int(((<$pipe> // 0) =~ /^(\d*)$/)[0]); }; eval { run_with_timeout($timeout, $readvalues); -- 2.39.2