This keeps track of the current line number in the output file internally (counting from 1). It is not used for any purpose in this commit. --- generator/utils.ml | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/generator/utils.ml b/generator/utils.ml index b8f394ce2..48669f9b7 100644 --- a/generator/utils.ml +++ b/generator/utils.ml @@ -124,28 +124,25 @@ let cspan str reject = in loop 0 -(* Last output column. *) -let col = ref 0 +(* Current output line and column. *) +let lineno = ref 1 and col = ref 0 type chan = NoOutput | OutChannel of out_channel | Buffer of Buffer.t let chan = ref NoOutput let pr fs = ksprintf ( fun str -> - (* Maintain the current output column. We can simply do this - * by counting backwards from the end of the string until we - * reach a \n (or the beginning). The number we count is - * the new column. This only works for 7 bit ASCII but - * that's enough for what we need this for. + (* Maintain the current output row & column. This only + * works for 7 bit ASCII but that's enough for what we need + * this for. *) - let rec loop i acc = - if i >= 0 then ( - if String.unsafe_get str i = '\n' then acc - else loop (i-1) (acc+1) - ) - else !col + acc - in - col := loop (String.length str - 1) 0; + for i = 0 to String.length str - 1 do + if String.unsafe_get str i = '\n' then ( + col := 0; + incr lineno + ) else + incr col + done; match !chan with | NoOutput -> failwithf "use ‘output_to’ to set output" | OutChannel chan -> output_string chan str @@ -250,6 +247,7 @@ let files_equal n1 n2 = | i -> failwithf "%s: failed with error code %d" cmd i let output_to filename k = + lineno := 1; col := 0; let filename_new = filename ^ ".new" in let c = open_out filename_new in chan := OutChannel c; -- 2.32.0 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs