We're going to reuse the part of "pr_wrap" that runs "code" while
temporarily redirecting the output channel to a buffer. Extract it as
"pr_buf".

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2172516
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---
 generator/utils.ml | 22 +++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/generator/utils.ml b/generator/utils.ml
index 48bd6dd12ba8..5ae87c1ba786 100644
--- a/generator/utils.ml
+++ b/generator/utils.ml
@@ -151,6 +151,19 @@ let
 
 let spaces n = String.make n ' '
 
+(* Save the current output channel and replace it with a temporary buffer while
+ * running ‘code’.  Return the buffer.
+ *)
+let pr_buf code =
+  let old_chan = !chan in
+  let wrapping_col = !col in
+  let b = Buffer.create 1024 in
+  chan := Buffer b;
+  let exn = try code (); None with exn -> Some exn in
+  chan := old_chan;
+  col := wrapping_col;
+  match exn with None -> b | Some exn -> raise exn
+
 (* Wrap the output at maxcol, breaking up lines when a 'c' character
  * occurs.  For example:
  *   foobar = a, b, c, d, e, f, g
@@ -165,15 +178,8 @@ let
    * temporary buffer while running ‘code’.  Then we wrap the
    * buffer and write it to the restored channel.
    *)
-  let old_chan = !chan in
+  let b = pr_buf code in
   let wrapping_col = !col in
-  let b = Buffer.create 1024 in
-  chan := Buffer b;
-  let exn = try code (); None with exn -> Some exn in
-  chan := old_chan;
-  col := wrapping_col;
-  (match exn with None -> () | Some exn -> raise exn);
-
   let lines = nsplit "\n" (Buffer.contents b) in
   match lines with
   | [] -> ()

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to