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(a)redhat.com>
Signed-off-by: Laszlo Ersek <lersek(a)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 =
Obvious code motion & hiding a function which is no longer needed
outside this module.
Reviewed-by: Richard W.M. Jones <rjones(a)redhat.com>
Rich.
--
Richard Jones, Virtualization Group, Red Hat
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.