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@redhat.com> Signed-off-by: Laszlo Ersek <lersek@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