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