From: Thomas Lamprecht Date: Tue, 19 Dec 2017 10:50:16 +0000 (+0100) Subject: run_command: add 'quiet' parameter for omitting STD* prints X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=ed61b9d67588465f101ec043a1e224608c833e02;hp=3e2da216007a4f63716c0a1fae179d24816a3752 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 --- 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(); }