X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FTools.pm;fp=src%2FPVE%2FTools.pm;h=d9c69e3d803683460ac7b7c95981e3d9d1e8e306;hp=5d53127445885f5350b51f72014d6a3c9ecdc1cd;hb=cb9db10c1a9855cf40ff13e81f9dd97d6a9b2698;hpb=8fb28ab914a9a9db46f8994f481806e086b1246d diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm index 5d53127..d9c69e3 100644 --- a/src/PVE/Tools.pm +++ b/src/PVE/Tools.pm @@ -497,12 +497,13 @@ sub run_command { if ($h eq $reader) { if ($outfunc || $logfunc) { eval { - $outlog .= $buf; - while ($outlog =~ s/^([^\010\r\n]*)(\r|\n|(\010)+|\r\n)//s) { - my $line = $1; + while ($buf =~ s/^([^\010\r\n]*)(\r|\n|(\010)+|\r\n)//) { + my $line = $outlog . $1; + $outlog = ''; &$outfunc($line) if $outfunc; &$logfunc($line) if $logfunc; } + $outlog .= $buf; }; my $err = $@; if ($err) { @@ -517,12 +518,13 @@ sub run_command { } elsif ($h eq $error) { if ($errfunc || $logfunc) { eval { - $errlog .= $buf; - while ($errlog =~ s/^([^\010\r\n]*)(\r|\n|(\010)+|\r\n)//s) { - my $line = $1; + while ($buf =~ s/^([^\010\r\n]*)(\r|\n|(\010)+|\r\n)//s) { + my $line = $errlog . $1; + $errlog = ''; &$errfunc($line) if $errfunc; &$logfunc($line) if $logfunc; } + $errlog .= $buf; }; my $err = $@; if ($err) {