From ed61b9d67588465f101ec043a1e224608c833e02 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Tue, 19 Dec 2017 11:50:16 +0100 Subject: [PATCH] run_command: add 'quiet' parameter for omitting STD* prints Without this patch we printed to STDOUT and STDERR, respectively, if no $outfunc or $errfunc was passed. Sometimes it's useful if one, or even both, of those prints can be suppressed, currently this can only be done by either using an array of arrays or a whole string for the command and redirecting STDOUT and STDERR. Add a 'quiet' option which allows to do this in an easier way. It allows to silent STDERR or STDOUT or both. Signed-off-by: Thomas Lamprecht --- src/PVE/Tools.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm index f43424b..f91d35a 100644 --- a/src/PVE/Tools.pm +++ b/src/PVE/Tools.pm @@ -369,6 +369,7 @@ sub run_command { my $afterfork; my $noerr; my $keeplocale; + my $quiet; eval { @@ -395,6 +396,8 @@ sub run_command { $noerr = $param{$p}; } elsif ($p eq 'keeplocale') { $keeplocale = $param{$p}; + } elsif ($p eq 'quiet') { + $quiet = $param{$p}; } else { die "got unknown parameter '$p' for run_command\n"; } @@ -497,7 +500,7 @@ sub run_command { waitpid ($pid, 0); die $err; } - } else { + } elsif (!$quiet) { print $buf; *STDOUT->flush(); } @@ -517,7 +520,7 @@ sub run_command { waitpid ($pid, 0); die $err; } - } else { + } elsif (!$quiet) { print STDERR $buf; *STDERR->flush(); } -- 2.39.2