[Libguestfs] [PATCH libnbd 3/3] generator: Reset line directive after included code in lib/states.c

Richard W.M. Jones rjones at redhat.com
Fri Dec 3 19:02:10 UTC 2021


---
 TODO                                 | 6 ------
 generator/state_machine_generator.ml | 2 ++
 generator/utils.ml                   | 2 ++
 generator/utils.mli                  | 1 +
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/TODO b/TODO
index 3861edc40..39642bc15 100644
--- a/TODO
+++ b/TODO
@@ -5,12 +5,6 @@ Bindings in other languages.
  - Latest attempt at adding Rust:
    https://www.redhat.com/archives/libguestfs/2019-August/msg00416.html
 
-Additional #line directives in generated lib/states.c that track
-position of output file when no longer copying lines from
-generator/states-*.c.  Probably requires moving type location, noloc,
-and line_directive_of_location to utils.ml, and teaching pr to track
-lines as well as columns.
-
 Example code integrating with ppoll, pollfd, APR pollset (and others?).
 
 NBD resize extension.
diff --git a/generator/state_machine_generator.ml b/generator/state_machine_generator.ml
index 4e4751b76..2f4837f85 100644
--- a/generator/state_machine_generator.ml
+++ b/generator/state_machine_generator.ml
@@ -360,6 +360,8 @@ let generate_lib_states_c () =
         pr "  return 0;\n";
       pr "}\n";
       pr "\n";
+      let output_loc = "lib/states.c", output_lineno () in
+      pr "%s\n" (line_directive_of_location output_loc);
       pr "int\n";
       pr "nbd_internal_enter_%s (struct nbd_handle *h, bool *blocked)\n"
         state_enum;
diff --git a/generator/utils.ml b/generator/utils.ml
index 48669f9b7..499e8f8ec 100644
--- a/generator/utils.ml
+++ b/generator/utils.ml
@@ -190,6 +190,8 @@ let pr_wrap ?(maxcol = 76) c code =
       *)
      pr "%s" (String.concat "\n" rest)
 
+let output_lineno () = !lineno
+
 let string_of_location (file, lineno) = sprintf "%s:%d" file lineno
 let line_directive_of_location (file, lineno) =
   sprintf "#line %d \"%s\"" lineno file
diff --git a/generator/utils.mli b/generator/utils.mli
index c6ed61ce0..21afe5529 100644
--- a/generator/utils.mli
+++ b/generator/utils.mli
@@ -52,6 +52,7 @@ val generate_header : ?extra_sources:string list -> comment_style -> unit
 val output_to : string -> (unit -> 'a) -> unit
 val pr : ('a, unit, string, unit) format4 -> 'a
 val pr_wrap : ?maxcol:int -> char -> (unit -> 'a) -> unit
+val output_lineno : unit -> int
 
 val noloc : location
 val string_of_location : location -> string
-- 
2.32.0




More information about the Libguestfs mailing list