[Libguestfs] [PATCH 1/5] mllib: make external_command echo the command executed

Pino Toscano ptoscano at redhat.com
Mon May 23 16:25:13 UTC 2016


Add an optional parameter to disable this behaviour, so the Curl module
in v2v won't print user-sensible data (like passwords).
---
 builder/checksums.ml   | 1 -
 builder/downloader.ml  | 1 -
 builder/sigchecker.ml  | 1 -
 mllib/common_utils.ml  | 4 +++-
 mllib/common_utils.mli | 7 +++++--
 v2v/curl.ml            | 2 +-
 6 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/builder/checksums.ml b/builder/checksums.ml
index 95103e9..c8cdc98 100644
--- a/builder/checksums.ml
+++ b/builder/checksums.ml
@@ -43,7 +43,6 @@ let verify_checksum csum filename =
   in
 
   let cmd = sprintf "%s %s" prog (quote filename) in
-  debug "%s" cmd;
   let lines = external_command cmd in
   match lines with
   | [] ->
diff --git a/builder/downloader.ml b/builder/downloader.ml
index e31748d..7dc0a29 100644
--- a/builder/downloader.ml
+++ b/builder/downloader.ml
@@ -99,7 +99,6 @@ and download_to t ?(progress_bar = false) ~proxy uri filename =
       t.curl
       (if verbose () then "" else " -s -S")
       (quote uri) in
-    debug "%s" cmd;
     let lines = external_command cmd in
     if List.length lines < 1 then
       error (f_"unexpected output from curl command, enable debug and look at previous messages");
diff --git a/builder/sigchecker.ml b/builder/sigchecker.ml
index 2b77193..39a2766 100644
--- a/builder/sigchecker.ml
+++ b/builder/sigchecker.ml
@@ -69,7 +69,6 @@ let import_keyfile ~gpg ~gpghome ?(trust = true) keyfile =
      * fingerprint of the subkeys. *)
     let cmd = sprintf "%s --homedir %s --with-colons --with-fingerprint --with-fingerprint --list-keys %s"
       gpg gpghome !fingerprint in
-    debug "%s" cmd;
     let lines = external_command cmd in
     let current = ref None in
     let subkeys = ref [] in
diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
index 0ffa92c..32071f4 100644
--- a/mllib/common_utils.ml
+++ b/mllib/common_utils.ml
@@ -649,7 +649,9 @@ let compare_lvm2_uuids uuid1 uuid2 =
   loop 0 0
 
 (* Run an external command, slurp up the output as a list of lines. *)
-let external_command cmd =
+let external_command ?(echo_cmd = true) cmd =
+  if echo_cmd then
+    debug "%s" cmd;
   let chan = Unix.open_process_in cmd in
   let lines = ref [] in
   (try while true do lines := input_line chan :: !lines done
diff --git a/mllib/common_utils.mli b/mllib/common_utils.mli
index 666e023..a216e21 100644
--- a/mllib/common_utils.mli
+++ b/mllib/common_utils.mli
@@ -239,8 +239,11 @@ val compare_version : string -> string -> int
 val compare_lvm2_uuids : string -> string -> int
 (** Compare two LVM2 UUIDs, ignoring '-' characters. *)
 
-val external_command : string -> string list
-(** Run an external command, slurp up the output as a list of lines. *)
+val external_command : ?echo_cmd:bool -> string -> string list
+(** Run an external command, slurp up the output as a list of lines.
+
+    [echo_cmd] specifies whether output the full command on verbose
+    mode, and it's on by default. *)
 
 val uuidgen : unit -> string
 (** Run uuidgen to return a random UUID. *)
diff --git a/v2v/curl.ml b/v2v/curl.ml
index 046cba2..f0af160 100644
--- a/v2v/curl.ml
+++ b/v2v/curl.ml
@@ -48,7 +48,7 @@ let run curl_args =
   close_out chan;
 
   let cmd = sprintf "curl -q --config %s" (Filename.quote config_file) in
-  let lines = external_command cmd in
+  let lines = external_command ~echo_cmd:false cmd in
   Unix.unlink config_file;
   lines
 
-- 
2.5.5




More information about the Libguestfs mailing list