[pve-devel] [RFC common] run_command: add 'quite' parameter for omitting STD* prints

Thomas Lamprecht t.lamprecht at proxmox.com
Tue Dec 19 10:51:47 CET 2017


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 'quite' option which allows to do this in an easier way.
It allows to silent STDERR or STDOUT or both.

Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
---
 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 7efd0dd..b34c8b7 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 $quite;
 
     eval {
 
@@ -395,6 +396,8 @@ sub run_command {
 		$noerr = $param{$p};
 	    } elsif ($p eq 'keeplocale') {
 		$keeplocale = $param{$p};
+	    } elsif ($p eq 'quite') {
+		$quite = $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 (!$quite) {
 			print $buf;
 			*STDOUT->flush();
 		    }
@@ -517,7 +520,7 @@ sub run_command {
 			    waitpid ($pid, 0);
 			    die $err;
 			}
-		    } else {
+		    } elsif (!$quite) {
 			print STDERR $buf;
 			*STDERR->flush();
 		    }
-- 
2.11.0





More information about the pve-devel mailing list