On Tue, Nov 08, 2016 at 02:30:19PM +0100, Pino Toscano wrote:
Create a new guestfs-private.h header, and move there the definitions
of
all the actions with visibility VInternal, and all the private structs:
they are not meant to be used, not even seen, outside of the library.
Include the new header where needed, which means also a couple of places
outside the library (but they are tests, so it is acceptable for now).
The result of this is mostly motion of function and structs
declarations.
OK I understand why this change is made, but the naming of the new
header is super-confusing. We already have guestfs-internal.h and
guestfs-internal-actions.h (containing guestfs_impl_*), and now we're
adding guestfs-private.h containing guestfs_internal_* functions.
Hmm.
So the idea is fine, but renaming things to make them more sensible.
How about guestfs-internal-impl.h for guestfs_impl_*
and guestfs-internal-apis.h for guestfs_internal_* ?
Rich.
.gitignore | 1 +
generator/c.ml | 52 +++++++++++++++++++++----
generator/c.mli | 1 +
generator/main.ml | 1 +
generator/tests_c_api.ml | 1 +
src/available.c | 1 +
src/drives.c | 1 +
src/file.c | 1 +
src/handle.c | 1 +
src/inspect-fs.c | 1 +
src/journal.c | 1 +
src/mountable.c | 1 +
src/tsk.c | 1 +
tests/mountable/test-internal-parse-mountable.c | 1 +
tests/regressions/rhbz914931.c | 1 +
15 files changed, 58 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
index 633b39d..8235f77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -505,6 +505,7 @@ Makefile.in
/src/guestfs_protocol.c
/src/guestfs_protocol.h
/src/guestfs_protocol.x
+/src/guestfs-private.h
/src/guestfs-structs.pod
/src/libguestfs.3
/src/libguestfs.pc
diff --git a/generator/c.ml b/generator/c.ml
index f0df5ea..4497c48 100644
--- a/generator/c.ml
+++ b/generator/c.ml
@@ -39,7 +39,13 @@ let is_public { visibility = v } = match v with
| VPublic | VPublicNoFish | VStateTest | VDebug -> true
| VBindTest | VInternal -> false
-let is_private f = not (is_public f)
+let is_private { visibility = v } = match v with
+ | VBindTest -> true
+ | VPublic | VPublicNoFish | VStateTest | VDebug | VInternal -> false
+
+let is_internal { visibility = v } = match v with
+ | VInternal -> true
+ | VPublic | VPublicNoFish | VStateTest | VDebug | VBindTest -> false
let public_functions_sorted =
List.filter is_public (actions |> sort)
@@ -47,6 +53,9 @@ let public_functions_sorted =
let private_functions_sorted =
List.filter is_private (actions |> sort)
+let internal_functions_sorted =
+ List.filter is_internal (actions |> sort)
+
(* Generate a C function prototype. *)
let rec generate_prototype ?(extern = true) ?(static = false)
?(semicolon = true)
@@ -607,13 +616,6 @@ extern GUESTFS_DLL_PUBLIC void *guestfs_next_private (guestfs_h *g,
const char *
generate_all_headers private_functions_sorted;
- pr "\
-/* Private structures. */
-
-";
-
- generate_all_structs internal_structs;
-
pr "\
#endif /* End of GUESTFS_PRIVATE. */
@@ -650,6 +652,34 @@ pr "\
#endif /* GUESTFS_H_ */
"
+(* Generate the guestfs-private.h file. *)
+and generate_guestfs_private_h () =
+ generate_header CStyle LGPLv2plus;
+
+ pr "\
+#ifndef GUESTFS_PRIVATE_H_
+#define GUESTFS_PRIVATE_H_
+
+#include \"guestfs.h\"
+
+/* Private functions. */
+
+";
+
+ generate_all_headers internal_functions_sorted;
+
+ pr "\
+/* Private structures. */
+
+";
+
+ generate_all_structs internal_structs;
+
+ pr "\
+
+#endif /* GUESTFS_PRIVATE_H_ */
+"
+
(* The structures are carefully written to have exactly the same
* in-memory format as the XDR structures that we use on the wire to
* the daemon. The reason for creating copies of these structures
@@ -856,6 +886,7 @@ and generate_client_structs_free () =
#include <stdlib.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal.h\"
#include \"guestfs_protocol.h\"
@@ -905,6 +936,7 @@ and generate_client_structs_compare () =
#include <errno.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal.h\"
";
@@ -990,6 +1022,7 @@ and generate_client_structs_copy () =
#include <errno.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal.h\"
";
@@ -1173,6 +1206,7 @@ and generate_client_structs_cleanup () =
#include <stdlib.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal-frontend.h\"
";
@@ -1213,6 +1247,7 @@ and generate_client_structs_print_c () =
#include \"c-ctype.h\"
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"structs-print.h\"
";
@@ -1341,6 +1376,7 @@ and generate_client_actions actions () =
#include <string.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal.h\"
#include \"guestfs-internal-actions.h\"
#include \"guestfs_protocol.h\"
diff --git a/generator/c.mli b/generator/c.mli
index 8c4e86c..2d4dcfa 100644
--- a/generator/c.mli
+++ b/generator/c.mli
@@ -34,6 +34,7 @@ val generate_client_structs_print_h : unit -> unit
val generate_client_structs_print_c : unit -> unit
val generate_event_string_c : unit -> unit
val generate_guestfs_h : unit -> unit
+val generate_guestfs_private_h : unit -> unit
val generate_internal_actions_h : unit -> unit
val generate_internal_frontend_cleanups_h : unit -> unit
val generate_linker_script : unit -> unit
diff --git a/generator/main.ml b/generator/main.ml
index 8d385d1..9016063 100644
--- a/generator/main.ml
+++ b/generator/main.ml
@@ -96,6 +96,7 @@ Run it from the top source directory using the command
output_to "src/guestfs_protocol.x" generate_xdr;
output_to "src/guestfs.h" generate_guestfs_h;
+ output_to "src/guestfs-private.h" generate_guestfs_private_h;
output_to "src/guestfs-internal-actions.h" generate_internal_actions_h;
output_to "src/guestfs-internal-frontend-cleanups.h"
generate_internal_frontend_cleanups_h;
diff --git a/generator/tests_c_api.ml b/generator/tests_c_api.ml
index 21ef6e3..83a8332 100644
--- a/generator/tests_c_api.ml
+++ b/generator/tests_c_api.ml
@@ -46,6 +46,7 @@ let rec generate_c_api_tests () =
#include <errno.h>
#include \"guestfs.h\"
+#include \"guestfs-private.h\"
#include \"guestfs-internal-frontend.h\"
#include \"tests.h\"
diff --git a/src/available.c b/src/available.c
index ae0bd84..4609f34 100644
--- a/src/available.c
+++ b/src/available.c
@@ -22,6 +22,7 @@
#include <libintl.h>
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/drives.c b/src/drives.c
index 1e3b0af..de0ab2b 100644
--- a/src/drives.c
+++ b/src/drives.c
@@ -37,6 +37,7 @@
#include "ignore-value.h"
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/file.c b/src/file.c
index d57c4e1..2499000 100644
--- a/src/file.c
+++ b/src/file.c
@@ -30,6 +30,7 @@
#include "full-write.h"
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/handle.c b/src/handle.c
index 0796015..1d89e4b 100644
--- a/src/handle.c
+++ b/src/handle.c
@@ -37,6 +37,7 @@
#include "getprogname.h"
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/inspect-fs.c b/src/inspect-fs.c
index 5e5b004..244a0ee 100644
--- a/src/inspect-fs.c
+++ b/src/inspect-fs.c
@@ -34,6 +34,7 @@
#include "xstrtol.h"
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
static int check_filesystem (guestfs_h *g, const char *mountable,
diff --git a/src/journal.c b/src/journal.c
index 22b81de..e79520d 100644
--- a/src/journal.c
+++ b/src/journal.c
@@ -42,6 +42,7 @@
#include "full-read.h"
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/mountable.c b/src/mountable.c
index 9f7b451..45e7299 100644
--- a/src/mountable.c
+++ b/src/mountable.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal.h"
#include "guestfs-internal-actions.h"
diff --git a/src/tsk.c b/src/tsk.c
index 1def9c9..b017550 100644
--- a/src/tsk.c
+++ b/src/tsk.c
@@ -29,6 +29,7 @@
#include <rpc/types.h>
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs_protocol.h"
#include "guestfs-internal.h"
#include "guestfs-internal-all.h"
diff --git a/tests/mountable/test-internal-parse-mountable.c
b/tests/mountable/test-internal-parse-mountable.c
index ab86ccb..961ee25 100644
--- a/tests/mountable/test-internal-parse-mountable.c
+++ b/tests/mountable/test-internal-parse-mountable.c
@@ -27,6 +27,7 @@
#include <error.h>
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal-all.h"
int
diff --git a/tests/regressions/rhbz914931.c b/tests/regressions/rhbz914931.c
index 93878db..6d09b19 100644
--- a/tests/regressions/rhbz914931.c
+++ b/tests/regressions/rhbz914931.c
@@ -31,6 +31,7 @@
#include <error.h>
#include "guestfs.h"
+#include "guestfs-private.h"
#include "guestfs-internal-frontend.h"
#include "getprogname.h"
--
2.7.4
_______________________________________________
Libguestfs mailing list
Libguestfs(a)redhat.com
https://www.redhat.com/mailman/listinfo/libguestfs
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html