[Libguestfs] [PATCH v8 10/42] utils: Split out structs cleanups and printing into common/structs.

Richard W.M. Jones rjones at redhat.com
Wed Jun 21 17:29:17 UTC 2017


These won't be used by the daemon, so interferes with us using
common/utils in the daemon, so they are moved to a different library.
---
 .gitignore                               |  8 +++---
 Makefile.am                              |  4 ++-
 align/Makefile.am                        |  2 ++
 align/scan.c                             |  1 +
 cat/Makefile.am                          | 10 ++++++++
 cat/filesystems.c                        |  1 +
 cat/log.c                                |  1 +
 cat/tail.c                               |  1 +
 common/mlvisit/Makefile.am               |  3 ++-
 common/structs/Makefile.am               | 44 ++++++++++++++++++++++++++++++++
 common/utils/Makefile.am                 | 16 ------------
 common/utils/guestfs-internal-frontend.h |  5 ----
 common/visit/Makefile.am                 |  3 ++-
 common/visit/visit.c                     |  1 +
 configure.ac                             |  1 +
 df/Makefile.am                           |  2 ++
 df/df.c                                  |  1 +
 diff/Makefile.am                         |  1 +
 docs/C_SOURCE_FILES                      |  8 +++---
 docs/guestfs-hacking.pod                 |  5 ++++
 fish/Makefile.am                         |  4 +++
 generator/c.ml                           | 17 +++++-------
 generator/c.mli                          |  4 +--
 generator/java.ml                        |  1 +
 generator/main.ml                        | 12 ++++-----
 generator/tests_c_api.ml                 |  1 +
 inspector/Makefile.am                    |  2 ++
 inspector/inspector.c                    |  1 +
 java/Makefile.am                         |  2 ++
 lib/Makefile.am                          |  6 ++++-
 lib/file.c                               |  1 +
 lib/fuse.c                               |  1 +
 lib/inspect-apps.c                       |  1 +
 lib/inspect-fs-windows.c                 |  1 +
 lib/inspect-fs.c                         |  1 +
 lib/launch.c                             |  1 +
 lib/listfs.c                             |  1 +
 lib/mountable.c                          |  2 +-
 make-fs/Makefile.am                      |  2 ++
 make-fs/make-fs.c                        |  1 +
 sysprep/Makefile.am                      |  2 ++
 tests/c-api/Makefile.am                  |  2 ++
 tests/c-api/tests-main.c                 |  1 +
 43 files changed, 133 insertions(+), 52 deletions(-)

diff --git a/.gitignore b/.gitignore
index eb85f74c0..5cf0d8dbc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -136,10 +136,10 @@ Makefile.in
 /common/protocol/guestfs_protocol.h
 /common/protocol/guestfs_protocol.x
 /common/qemuopts/qemuopts-tests
-/common/utils/guestfs-internal-frontend-cleanups.h
-/common/utils/structs-cleanup.c
-/common/utils/structs-print.c
-/common/utils/structs-print.h
+/common/structs/structs-cleanups.c
+/common/structs/structs-cleanups.h
+/common/structs/structs-print.c
+/common/structs/structs-print.h
 /compile
 /config.cache
 /config.guess
diff --git a/Makefile.am b/Makefile.am
index 64ac23f2e..b14ce4813 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -38,7 +38,9 @@ SUBDIRS += gnulib/tests
 endif
 
 # Basic source for the library.
-SUBDIRS += common/errnostring common/protocol common/qemuopts common/utils
+SUBDIRS += common/errnostring common/protocol common/qemuopts
+SUBDIRS += common/utils
+SUBDIRS += common/structs
 SUBDIRS += lib docs examples po
 
 # The daemon and the appliance.
diff --git a/align/Makefile.am b/align/Makefile.am
index 8d4fce11b..cc8df13f7 100644
--- a/align/Makefile.am
+++ b/align/Makefile.am
@@ -31,6 +31,7 @@ virt_alignment_scan_SOURCES = \
 virt_alignment_scan_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/parallel -I$(top_builddir)/common/parallel \
@@ -46,6 +47,7 @@ virt_alignment_scan_CFLAGS = \
 virt_alignment_scan_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/parallel/libparallel.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/align/scan.c b/align/scan.c
index 4fa95c0a3..b9f29868c 100644
--- a/align/scan.c
+++ b/align/scan.c
@@ -41,6 +41,7 @@
 #include "getprogname.h"
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 #include "parallel.h"
diff --git a/cat/Makefile.am b/cat/Makefile.am
index 4b9171937..3fb579769 100644
--- a/cat/Makefile.am
+++ b/cat/Makefile.am
@@ -39,6 +39,7 @@ virt_cat_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/windows -I$(top_builddir)/common/windows \
@@ -51,6 +52,7 @@ virt_cat_CFLAGS = \
 virt_cat_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/windows/libwindows.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
@@ -65,6 +67,7 @@ virt_filesystems_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/windows -I$(top_builddir)/common/windows \
@@ -77,6 +80,7 @@ virt_filesystems_CFLAGS = \
 virt_filesystems_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/windows/libwindows.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
@@ -91,6 +95,7 @@ virt_log_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/windows -I$(top_builddir)/common/windows \
@@ -102,6 +107,7 @@ virt_log_CFLAGS = \
 
 virt_log_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
@@ -116,6 +122,7 @@ virt_ls_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/visit \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
@@ -129,6 +136,7 @@ virt_ls_CFLAGS = \
 virt_ls_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/visit/libvisit.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
@@ -143,6 +151,7 @@ virt_tail_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/windows -I$(top_builddir)/common/windows \
@@ -155,6 +164,7 @@ virt_tail_CFLAGS = \
 virt_tail_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/windows/libwindows.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/cat/filesystems.c b/cat/filesystems.c
index f3dd265ab..74e994169 100644
--- a/cat/filesystems.c
+++ b/cat/filesystems.c
@@ -37,6 +37,7 @@
 #include "getprogname.h"
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 
diff --git a/cat/log.c b/cat/log.c
index 92272b8d1..6e445af0b 100644
--- a/cat/log.c
+++ b/cat/log.c
@@ -38,6 +38,7 @@
 #include "getprogname.h"
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 
diff --git a/cat/tail.c b/cat/tail.c
index 4ac73ad36..e932820e6 100644
--- a/cat/tail.c
+++ b/cat/tail.c
@@ -37,6 +37,7 @@
 #include "ignore-value.h"
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 #include "windows.h"
diff --git a/common/mlvisit/Makefile.am b/common/mlvisit/Makefile.am
index 51cbd2de6..2019efd75 100644
--- a/common/mlvisit/Makefile.am
+++ b/common/mlvisit/Makefile.am
@@ -74,6 +74,7 @@ OCAMLPACKAGES = \
 	-I $(top_builddir)/gnulib/lib/.libs \
 	-I $(top_builddir)/ocaml \
 	-I $(top_builddir)/common/utils/.libs \
+	-I $(top_builddir)/common/structs/.libs \
 	-I $(top_builddir)/common/visit/.libs \
 	-I $(builddir)
 OCAMLPACKAGES_TESTS = $(MLVISIT_CMA)
@@ -115,7 +116,7 @@ visit_tests_DEPENDENCIES = \
 	$(top_srcdir)/ocaml-link.sh
 visit_tests_LINK = \
 	$(top_srcdir)/ocaml-link.sh \
-	  -cclib '-lvisit -lutils $(LIBXML2_LIBS) -lgnu' -- \
+	  -cclib '-lvisit -lstructs -lutils $(LIBXML2_LIBS) -lgnu' -- \
 	  $(OCAMLFIND) $(BEST) $(OCAMLFLAGS) $(OCAMLLINKFLAGS) \
 	  $(OCAMLPACKAGES) $(OCAMLPACKAGES_TESTS) \
 	  $(visit_tests_THEOBJECTS) -o $@
diff --git a/common/structs/Makefile.am b/common/structs/Makefile.am
new file mode 100644
index 000000000..1762af276
--- /dev/null
+++ b/common/structs/Makefile.am
@@ -0,0 +1,44 @@
+# libguestfs
+# Copyright (C) 2017 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
+	structs-cleanups.c \
+	structs-cleanups.h \
+	structs-print.c \
+	structs-print.h
+
+BUILT_SOURCES = \
+	$(generator_built)
+
+EXTRA_DIST = \
+	$(BUILT_SOURCES)
+
+noinst_LTLIBRARIES = libstructs.la
+
+libstructs_la_SOURCES = \
+	../../lib/guestfs.h \
+	$(BUILT_SOURCES)
+libstructs_la_CPPFLAGS = \
+	-DGUESTFS_WARN_DEPRECATED=1 \
+	-DGUESTFS_PRIVATE=1 \
+	-I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \
+	-I$(top_srcdir)/lib -I$(top_builddir)/lib
+libstructs_la_CFLAGS = \
+	$(WARN_CFLAGS) $(WERROR_CFLAGS) \
+	$(GCC_VISIBILITY_HIDDEN)
diff --git a/common/utils/Makefile.am b/common/utils/Makefile.am
index 5c9728797..a86b715f6 100644
--- a/common/utils/Makefile.am
+++ b/common/utils/Makefile.am
@@ -17,18 +17,6 @@
 
 include $(top_srcdir)/subdir-rules.mk
 
-generator_built = \
-	guestfs-internal-frontend-cleanups.h \
-	structs-cleanup.c \
-	structs-print.c \
-	structs-print.h
-
-BUILT_SOURCES = \
-	$(generator_built)
-
-EXTRA_DIST = \
-	$(BUILT_SOURCES)
-
 noinst_LTLIBRARIES = libutils.la
 
 libutils_la_SOURCES = \
@@ -36,11 +24,7 @@ libutils_la_SOURCES = \
 	cleanups.c \
 	cleanups.h \
 	guestfs-internal-frontend.h \
-	guestfs-internal-frontend-cleanups.h \
 	libxml2-cleanups.c \
-	structs-cleanup.c \
-	structs-print.c \
-	structs-print.h \
 	utils.c
 libutils_la_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
diff --git a/common/utils/guestfs-internal-frontend.h b/common/utils/guestfs-internal-frontend.h
index 1d5a50664..3594d593e 100644
--- a/common/utils/guestfs-internal-frontend.h
+++ b/common/utils/guestfs-internal-frontend.h
@@ -63,11 +63,6 @@ extern void guestfs_int_fadvise_noreuse (int fd);
 //extern void guestfs_int_fadvise_willneed (int fd);
 extern char *guestfs_int_shell_unquote (const char *str);
 
-/* These are in a separate header so the header can be generated.
- * Don't include the following file directly:
- */
-#include "guestfs-internal-frontend-cleanups.h"
-
 /* Not all language bindings know how to deal with Pointer arguments.
  * Those that don't will use this macro which complains noisily and
  * returns NULL.
diff --git a/common/visit/Makefile.am b/common/visit/Makefile.am
index e95954a11..8b9136780 100644
--- a/common/visit/Makefile.am
+++ b/common/visit/Makefile.am
@@ -27,7 +27,8 @@ libvisit_la_CPPFLAGS = \
 	-DGUESTFS_PRIVATE=1 \
 	-I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
-	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils
+	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs
 libvisit_la_CFLAGS = \
 	$(WARN_CFLAGS) $(WERROR_CFLAGS) \
 	$(GCC_VISIBILITY_HIDDEN)
diff --git a/common/visit/visit.c b/common/visit/visit.c
index 5045f9f71..491f9dda3 100644
--- a/common/visit/visit.c
+++ b/common/visit/visit.c
@@ -37,6 +37,7 @@
 
 #include "guestfs.h"
 #include "guestfs-internal-frontend.h"
+#include "structs-cleanups.h"
 
 #include "visit.h"
 
diff --git a/configure.ac b/configure.ac
index eba149241..8c782368f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -195,6 +195,7 @@ AC_CONFIG_FILES([Makefile
                  common/progress/Makefile
                  common/protocol/Makefile
                  common/qemuopts/Makefile
+                 common/structs/Makefile
                  common/utils/Makefile
                  common/visit/Makefile
                  common/windows/Makefile
diff --git a/df/Makefile.am b/df/Makefile.am
index 8725402bc..89ec12a64 100644
--- a/df/Makefile.am
+++ b/df/Makefile.am
@@ -36,6 +36,7 @@ virt_df_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/common/parallel -I$(top_builddir)/common/parallel \
@@ -50,6 +51,7 @@ virt_df_CFLAGS = \
 virt_df_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/parallel/libparallel.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/df/df.c b/df/df.c
index a13cc5910..66b1d8334 100644
--- a/df/df.c
+++ b/df/df.c
@@ -27,6 +27,7 @@
 #include <errno.h>
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "domains.h"
 #include "virt-df.h"
diff --git a/diff/Makefile.am b/diff/Makefile.am
index 5e71b74de..574981f8b 100644
--- a/diff/Makefile.am
+++ b/diff/Makefile.am
@@ -44,6 +44,7 @@ virt_diff_CFLAGS = \
 virt_diff_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/visit/libvisit.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/docs/C_SOURCE_FILES b/docs/C_SOURCE_FILES
index f690fb473..1f0758106 100644
--- a/docs/C_SOURCE_FILES
+++ b/docs/C_SOURCE_FILES
@@ -42,14 +42,14 @@ common/progress/progress.h
 common/qemuopts/qemuopts-tests.c
 common/qemuopts/qemuopts.c
 common/qemuopts/qemuopts.h
+common/structs/structs-cleanups.c
+common/structs/structs-cleanups.h
+common/structs/structs-print.c
+common/structs/structs-print.h
 common/utils/cleanups.c
 common/utils/cleanups.h
-common/utils/guestfs-internal-frontend-cleanups.h
 common/utils/guestfs-internal-frontend.h
 common/utils/libxml2-cleanups.c
-common/utils/structs-cleanup.c
-common/utils/structs-print.c
-common/utils/structs-print.h
 common/utils/utils.c
 common/visit/visit.c
 common/visit/visit.h
diff --git a/docs/guestfs-hacking.pod b/docs/guestfs-hacking.pod
index beb44d2dc..fa00a9ab6 100644
--- a/docs/guestfs-hacking.pod
+++ b/docs/guestfs-hacking.pod
@@ -137,6 +137,11 @@ and the daemon running inside the appliance is defined here.
 
 Mini-library for writing qemu command lines and qemu config files.
 
+=item F<common/structs>
+
+Common code for printing and freeing libguestfs structs, used by the
+library and some tools.
+
 =item F<common/utils>
 
 Various utility functions used throughout the library and tools.
diff --git a/fish/Makefile.am b/fish/Makefile.am
index 9c07761e2..a6efbb439 100644
--- a/fish/Makefile.am
+++ b/fish/Makefile.am
@@ -108,10 +108,12 @@ librc_protocol_la_CFLAGS = -Wall -Wno-unused -fno-strict-aliasing
 libcmds_la_SOURCES = cmds-gperf.c
 libcmds_la_CPPFLAGS = \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(srcdir)/../gnulib/lib -I../gnulib/lib
 libcmds_la_CFLAGS =
 libcmds_la_LIBADD = \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(LTLIBINTL)
 
@@ -124,6 +126,7 @@ guestfish_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/edit -I$(top_builddir)/common/edit \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
@@ -141,6 +144,7 @@ guestfish_LDADD = \
 	$(top_builddir)/common/edit/libedit.la \
 	$(top_builddir)/common/options/liboptions.la \
 	$(top_builddir)/common/progress/libprogress.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/generator/c.ml b/generator/c.ml
index 27bf1ebf9..c9fd867de 100644
--- a/generator/c.ml
+++ b/generator/c.ml
@@ -794,20 +794,17 @@ and generate_internal_actions_h () =
   pr "\n";
   pr "#endif /* GUESTFS_INTERNAL_ACTIONS_H_ */\n"
 
-(* Generate guestfs-internal-frontend-cleanups.h file. *)
-and generate_internal_frontend_cleanups_h () =
+(* Generate structs-cleanups.h file. *)
+and generate_client_structs_cleanups_h () =
   generate_header CStyle LGPLv2plus;
 
   pr "\
 /* These CLEANUP_* macros automatically free the struct or struct list
  * pointed to by the local variable at the end of the current scope.
- *
- * Don't include this file directly!  To use these cleanups in library
- * bindings and tools, include \"guestfs-internal-frontend.h\" only.
  */
 
-#ifndef GUESTFS_INTERNAL_FRONTEND_CLEANUPS_H_
-#define GUESTFS_INTERNAL_FRONTEND_CLEANUPS_H_
+#ifndef GUESTFS_STRUCTS_CLEANUPS_H_
+#define GUESTFS_STRUCTS_CLEANUPS_H_
 
 #ifdef HAVE_ATTRIBUTE_CLEANUP
 ";
@@ -846,7 +843,7 @@ and generate_internal_frontend_cleanups_h () =
   ) structs;
 
   pr "\n";
-  pr "#endif /* GUESTFS_INTERNAL_FRONTEND_CLEANUPS_H_ */\n"
+  pr "#endif /* GUESTFS_STRUCTS_CLEANUPS_H_ */\n"
 
 (* Functions to free structures. *)
 and generate_client_structs_free () =
@@ -1166,7 +1163,7 @@ and generate_client_structs_copy () =
   ) structs
 
 (* Functions to free structures used by the CLEANUP_* macros. *)
-and generate_client_structs_cleanup () =
+and generate_client_structs_cleanups_c () =
   generate_header CStyle LGPLv2plus;
 
   pr "\
@@ -1176,7 +1173,7 @@ and generate_client_structs_cleanup () =
 #include <stdlib.h>
 
 #include \"guestfs.h\"
-#include \"guestfs-internal-frontend.h\"
+#include \"structs-cleanups.h\"
 
 ";
 
diff --git a/generator/c.mli b/generator/c.mli
index 0884a8dfe..6d8cae891 100644
--- a/generator/c.mli
+++ b/generator/c.mli
@@ -26,7 +26,8 @@ val generate_actions_pod : unit -> unit
 val generate_availability_pod : unit -> unit
 val generate_client_actions : Types.action list -> unit -> unit
 val generate_client_actions_variants : unit -> unit
-val generate_client_structs_cleanup : unit -> unit
+val generate_client_structs_cleanups_h : unit -> unit
+val generate_client_structs_cleanups_c : unit -> unit
 val generate_client_structs_compare : unit -> unit
 val generate_client_structs_copy : unit -> unit
 val generate_client_structs_free : unit -> unit
@@ -35,7 +36,6 @@ val generate_client_structs_print_c : unit -> unit
 val generate_event_string_c : unit -> unit
 val generate_guestfs_h : unit -> unit
 val generate_internal_actions_h : unit -> unit
-val generate_internal_frontend_cleanups_h : unit -> unit
 val generate_linker_script : unit -> unit
 val generate_max_proc_nr : unit -> unit
 val generate_structs_pod : unit -> unit
diff --git a/generator/java.ml b/generator/java.ml
index 7c3212a49..a7d0ed359 100644
--- a/generator/java.ml
+++ b/generator/java.ml
@@ -586,6 +586,7 @@ and generate_java_c actions () =
 #include \"com_redhat_et_libguestfs_GuestFS.h\"
 #include \"guestfs.h\"
 #include \"guestfs-internal-frontend.h\"
+#include \"structs-cleanups.h\"
 
 /* Note that this function returns.  The exception is not thrown
  * until after the wrapper function returns.
diff --git a/generator/main.ml b/generator/main.ml
index 8ff698130..33fe2b2ee 100644
--- a/generator/main.ml
+++ b/generator/main.ml
@@ -86,13 +86,13 @@ Run it from the top source directory using the command
             Errnostring.generate_errnostring_h;
   output_to "common/protocol/guestfs_protocol.x"
             XDR.generate_xdr;
-  output_to "common/utils/guestfs-internal-frontend-cleanups.h"
-            C.generate_internal_frontend_cleanups_h;
-  output_to "common/utils/structs-cleanup.c"
-            C.generate_client_structs_cleanup;
-  output_to "common/utils/structs-print.c"
+  output_to "common/structs/structs-cleanups.h"
+            C.generate_client_structs_cleanups_h;
+  output_to "common/structs/structs-cleanups.c"
+            C.generate_client_structs_cleanups_c;
+  output_to "common/structs/structs-print.c"
             C.generate_client_structs_print_c;
-  output_to "common/utils/structs-print.h"
+  output_to "common/structs/structs-print.h"
             C.generate_client_structs_print_h;
   output_to "lib/uefi.c"
             UEFI.generate_uefi_c;
diff --git a/generator/tests_c_api.ml b/generator/tests_c_api.ml
index a680521f4..c3cb62c4d 100644
--- a/generator/tests_c_api.ml
+++ b/generator/tests_c_api.ml
@@ -48,6 +48,7 @@ let rec generate_c_api_tests () =
 
 #include \"guestfs.h\"
 #include \"guestfs-internal-frontend.h\"
+#include \"structs-cleanups.h\"
 
 #include \"tests.h\"
 
diff --git a/inspector/Makefile.am b/inspector/Makefile.am
index 753e2c93c..9402270c9 100644
--- a/inspector/Makefile.am
+++ b/inspector/Makefile.am
@@ -59,6 +59,7 @@ virt_inspector_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/fish \
@@ -70,6 +71,7 @@ virt_inspector_CFLAGS = \
 
 virt_inspector_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/inspector/inspector.c b/inspector/inspector.c
index b00c85208..104310d1f 100644
--- a/inspector/inspector.c
+++ b/inspector/inspector.c
@@ -40,6 +40,7 @@
 #include "getprogname.h"
 
 #include "guestfs.h"
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 
diff --git a/java/Makefile.am b/java/Makefile.am
index ea64f5525..a4fcc38cf 100644
--- a/java/Makefile.am
+++ b/java/Makefile.am
@@ -109,6 +109,7 @@ libguestfs_jni_la_SOURCES = \
 libguestfs_jni_la_CPPFLAGS = \
 	-DGUESTFS_PRIVATE=1 \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib
 
 libguestfs_jni_la_CFLAGS = \
@@ -116,6 +117,7 @@ libguestfs_jni_la_CFLAGS = \
 	$(JNI_CFLAGS)
 
 libguestfs_jni_la_LIBADD = \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la
 
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 81841e6e1..3e71f3084 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -58,7 +58,7 @@ libguestfs_la_SOURCES = \
 	../common/protocol/guestfs_protocol.h \
 	../common/qemuopts/qemuopts.h \
 	../common/utils/guestfs-internal-frontend.h \
-	../common/utils/guestfs-internal-frontend-cleanups.h \
+	../common/structs/structs-cleanups.h \
 	guestfs.h \
 	guestfs-internal.h \
 	guestfs-internal-all.h \
@@ -140,6 +140,7 @@ libguestfs_la_CPPFLAGS = \
 	-I$(top_srcdir)/common/protocol -I$(top_builddir)/common/protocol \
 	-I$(top_srcdir)/common/qemuopts -I$(top_builddir)/common/qemuopts \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib
 
 libguestfs_la_CFLAGS = \
@@ -155,6 +156,7 @@ libguestfs_la_LIBADD = \
 	../common/errnostring/liberrnostring.la \
 	../common/protocol/libprotocol.la \
 	../common/qemuopts/libqemuopts.la \
+	../common/structs/libstructs.la \
 	../common/utils/libutils.la \
 	$(PCRE_LIBS) $(MAGIC_LIBS) \
 	$(LIBVIRT_LIBS) $(LIBXML2_LIBS) \
@@ -216,6 +218,7 @@ unit_tests_SOURCES = unit-tests.c
 unit_tests_CPPFLAGS = \
 	-I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I.
 unit_tests_CFLAGS = \
 	$(WARN_CFLAGS) $(WERROR_CFLAGS)
@@ -223,6 +226,7 @@ unit_tests_CFLAGS = \
 # non-exported functions we have to link with the objects not the
 # library.
 unit_tests_LDADD = \
+	../common/structs/libstructs.la \
 	../common/utils/libutils.la \
 	$(libguestfs_la_OBJECTS) \
 	$(libguestfs_la_LIBADD)
diff --git a/lib/file.c b/lib/file.c
index 53b859d4b..73c983c2b 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -32,6 +32,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
+#include "structs-cleanups.h"
 
 static int
 compare (const void *vp1, const void *vp2)
diff --git a/lib/fuse.c b/lib/fuse.c
index cde3783d9..de8c4d8f2 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -54,6 +54,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
+#include "structs-cleanups.h"
 
 #if HAVE_FUSE
 
diff --git a/lib/inspect-apps.c b/lib/inspect-apps.c
index c324f3bf0..25192340c 100644
--- a/lib/inspect-apps.c
+++ b/lib/inspect-apps.c
@@ -43,6 +43,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
+#include "structs-cleanups.h"
 
 #ifdef DB_DUMP
 static struct guestfs_application2_list *list_applications_rpm (guestfs_h *g, struct inspect_fs *fs);
diff --git a/lib/inspect-fs-windows.c b/lib/inspect-fs-windows.c
index 35f7cc821..b14dc2e14 100644
--- a/lib/inspect-fs-windows.c
+++ b/lib/inspect-fs-windows.c
@@ -48,6 +48,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
+#include "structs-cleanups.h"
 
 COMPILE_REGEXP (re_windows_version, "^(\\d+)\\.(\\d+)", 0)
 COMPILE_REGEXP (re_boot_ini_os_header, "^\\[operating systems\\]\\s*$", 0)
diff --git a/lib/inspect-fs.c b/lib/inspect-fs.c
index 9f7630bcf..2da73d310 100644
--- a/lib/inspect-fs.c
+++ b/lib/inspect-fs.c
@@ -35,6 +35,7 @@
 
 #include "guestfs.h"
 #include "guestfs-internal.h"
+#include "structs-cleanups.h"
 
 static int check_filesystem (guestfs_h *g, const char *mountable,
                              const struct guestfs_internal_mountable *m,
diff --git a/lib/launch.c b/lib/launch.c
index 04d69d867..70e7f8897 100644
--- a/lib/launch.c
+++ b/lib/launch.c
@@ -45,6 +45,7 @@
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
 #include "guestfs_protocol.h"
+#include "structs-cleanups.h"
 
 static struct backend {
   struct backend *next;
diff --git a/lib/listfs.c b/lib/listfs.c
index 88446cc9f..60aff3305 100644
--- a/lib/listfs.c
+++ b/lib/listfs.c
@@ -25,6 +25,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
+#include "structs-cleanups.h"
 
 /* List filesystems.
  *
diff --git a/lib/mountable.c b/lib/mountable.c
index 9f7b451fd..6e4a0c293 100644
--- a/lib/mountable.c
+++ b/lib/mountable.c
@@ -23,7 +23,7 @@
 #include "guestfs.h"
 #include "guestfs-internal.h"
 #include "guestfs-internal-actions.h"
-
+#include "structs-cleanups.h"
 
 char *
 guestfs_impl_mountable_device (guestfs_h *g, const char *mountable)
diff --git a/make-fs/Makefile.am b/make-fs/Makefile.am
index bef0e7bf8..28c274868 100644
--- a/make-fs/Makefile.am
+++ b/make-fs/Makefile.am
@@ -31,6 +31,7 @@ virt_make_fs_CPPFLAGS = \
 	-DGUESTFS_WARN_DEPRECATED=1 \
 	-DLOCALEBASEDIR=\""$(datadir)/locale"\" \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib \
 	-I$(top_srcdir)/common/options -I$(top_builddir)/common/options \
 	-I$(top_srcdir)/fish \
@@ -42,6 +43,7 @@ virt_make_fs_CFLAGS = \
 
 virt_make_fs_LDADD = \
 	$(top_builddir)/common/options/liboptions.la \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c
index 27cdb9fd2..e30745a0f 100644
--- a/make-fs/make-fs.c
+++ b/make-fs/make-fs.c
@@ -40,6 +40,7 @@
 #include "xstrtol.h"
 #include "getprogname.h"
 
+#include "structs-cleanups.h"
 #include "options.h"
 #include "display-options.h"
 
diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am
index c2adb1a6e..834baee6a 100644
--- a/sysprep/Makefile.am
+++ b/sysprep/Makefile.am
@@ -108,6 +108,7 @@ XOBJECTS = $(BOBJECTS:.cmo=.cmx)
 OCAMLPACKAGES = \
 	-package str,unix \
 	-I $(top_builddir)/common/utils/.libs \
+	-I $(top_builddir)/common/structs/.libs \
 	-I $(top_builddir)/lib/.libs \
 	-I $(top_builddir)/gnulib/lib/.libs \
 	-I $(top_builddir)/ocaml \
@@ -122,6 +123,7 @@ endif
 
 OCAMLCLIBS = \
 	-lvisit \
+	-lstructs \
 	-lutils \
 	$(LIBTINFO_LIBS) \
 	$(LIBCRYPT_LIBS) \
diff --git a/tests/c-api/Makefile.am b/tests/c-api/Makefile.am
index cb653f7a6..d79b8ed52 100644
--- a/tests/c-api/Makefile.am
+++ b/tests/c-api/Makefile.am
@@ -93,12 +93,14 @@ tests_CPPFLAGS = \
 	-DGUESTFS_PRIVATE=1 \
 	-I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib \
 	-I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \
+	-I$(top_srcdir)/common/structs -I$(top_builddir)/common/structs \
 	-I$(top_srcdir)/lib -I$(top_builddir)/lib
 tests_CFLAGS = \
 	$(WARN_CFLAGS) $(WERROR_CFLAGS) \
 	$(PCRE_CFLAGS)
 tests_LDADD = \
 	$(PCRE_LIBS) \
+	$(top_builddir)/common/structs/libstructs.la \
 	$(top_builddir)/common/utils/libutils.la \
 	$(top_builddir)/lib/libguestfs.la \
 	$(LIBXML2_LIBS) \
diff --git a/tests/c-api/tests-main.c b/tests/c-api/tests-main.c
index 0fd895423..f202a70ff 100644
--- a/tests/c-api/tests-main.c
+++ b/tests/c-api/tests-main.c
@@ -38,6 +38,7 @@
 
 #include "guestfs.h"
 #include "guestfs-internal-frontend.h"
+#include "structs-cleanups.h"
 
 #include "tests.h"
 
-- 
2.13.0




More information about the Libguestfs mailing list