[Libguestfs] [libguestfs-common PATCH 1/3] Demote "Std_utils.wrap" to an internal function in Tools_utils

Laszlo Ersek lersek at redhat.com
Fri Feb 11 15:32:23 UTC 2022


At this point, no client project of the libguestfs-common submodule should
be using "Std_utils.wrap", so we can remove its public declaration, and
make it an internal function in the module (Tools_utils) where its callers
are ("error", "warning", and "info").

Note: the "output_spaces" function is not moved; in addition to being
called by "wrap", it is also called by virt-v2v, from commit b4afcf1dac35
("v2v: Implement -i vmx to read VMware vmx files directly
(RHBZ#1441197).", 2017-04-11). "output_spaces" is generally useful for
formatting indented (not wrapped) debug output.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1820221
Suggested-by: Richard W.M. Jones <rjones at redhat.com>
Signed-off-by: Laszlo Ersek <lersek at redhat.com>
---
 mlstdutils/std_utils.mli |  3 ---
 mlstdutils/std_utils.ml  | 36 +-----------------------------------
 mltools/tools_utils.ml   | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/mlstdutils/std_utils.mli b/mlstdutils/std_utils.mli
index 8b6bcd1dd7ae..534caa80d6a7 100644
--- a/mlstdutils/std_utils.mli
+++ b/mlstdutils/std_utils.mli
@@ -315,9 +315,6 @@ val be64_of_int : int64 -> string
     On the OCaml side, 64 bit integers are always used so that you
     can use the [.^] operators on them for bit manipulation. *)
 
-val wrap : ?chan:out_channel -> ?indent:int -> string -> unit
-(** Wrap text. *)
-
 val output_spaces : out_channel -> int -> unit
 (** Write [n] spaces to [out_channel]. *)
 
diff --git a/mlstdutils/std_utils.ml b/mlstdutils/std_utils.ml
index 29add4a027bc..58ac058c1b3a 100644
--- a/mlstdutils/std_utils.ml
+++ b/mlstdutils/std_utils.ml
@@ -536,41 +536,7 @@ let be64_of_int i =
   Bytes.unsafe_set b 7 (Char.unsafe_chr (Int64.to_int c0));
   Bytes.to_string b
 
-type wrap_break_t = WrapEOS | WrapSpace | WrapNL
-
-let rec wrap ?(chan = stdout) ?(indent = 0) str =
-  let len = String.length str in
-  _wrap chan indent 0 0 len str
-
-and _wrap chan indent column i len str =
-  if i < len then (
-    let (j, break) = _wrap_find_next_break i len str in
-    let next_column =
-      if column + (j-i) >= 76 then (
-        output_char chan '\n';
-        output_spaces chan indent;
-        indent + (j-i) + 1
-      )
-      else column + (j-i) + 1 in
-    output chan (Bytes.of_string str) i (j-i);
-    match break with
-    | WrapEOS -> ()
-    | WrapSpace ->
-      output_char chan ' ';
-      _wrap chan indent next_column (j+1) len str
-    | WrapNL ->
-      output_char chan '\n';
-      output_spaces chan indent;
-      _wrap chan indent indent (j+1) len str
-  )
-
-and _wrap_find_next_break i len str =
-  if i >= len then (len, WrapEOS)
-  else if String.unsafe_get str i = ' ' then (i, WrapSpace)
-  else if String.unsafe_get str i = '\n' then (i, WrapNL)
-  else _wrap_find_next_break (i+1) len str
-
-and output_spaces chan n = for i = 0 to n-1 do output_char chan ' ' done
+let output_spaces chan n = for i = 0 to n-1 do output_char chan ' ' done
 
 let unique = let i = ref 0 in fun () -> incr i; !i
 
diff --git a/mltools/tools_utils.ml b/mltools/tools_utils.ml
index 177876e421e6..06ba2f7ab295 100644
--- a/mltools/tools_utils.ml
+++ b/mltools/tools_utils.ml
@@ -122,6 +122,41 @@ let message fs =
   in
   ksprintf display fs
 
+(* Wrap text. *)
+type wrap_break_t = WrapEOS | WrapSpace | WrapNL
+
+let rec wrap ?(chan = stdout) ?(indent = 0) str =
+  let len = String.length str in
+  _wrap chan indent 0 0 len str
+
+and _wrap chan indent column i len str =
+  if i < len then (
+    let (j, break) = _wrap_find_next_break i len str in
+    let next_column =
+      if column + (j-i) >= 76 then (
+        output_char chan '\n';
+        output_spaces chan indent;
+        indent + (j-i) + 1
+      )
+      else column + (j-i) + 1 in
+    output chan (Bytes.of_string str) i (j-i);
+    match break with
+    | WrapEOS -> ()
+    | WrapSpace ->
+      output_char chan ' ';
+      _wrap chan indent next_column (j+1) len str
+    | WrapNL ->
+      output_char chan '\n';
+      output_spaces chan indent;
+      _wrap chan indent indent (j+1) len str
+  )
+
+and _wrap_find_next_break i len str =
+  if i >= len then (len, WrapEOS)
+  else if String.unsafe_get str i = ' ' then (i, WrapSpace)
+  else if String.unsafe_get str i = '\n' then (i, WrapNL)
+  else _wrap_find_next_break (i+1) len str
+
 (* Error messages etc. *)
 let error ?(exit_code = 1) fs =
   let display str =
-- 
2.19.1.3.g30247aa5d201




More information about the Libguestfs mailing list