lib: Make <guestfs.h> be completely generated.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 11 Nov 2010 11:51:02 +0000 (11:51 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 11 Nov 2010 11:51:02 +0000 (11:51 +0000)
This removes the 'not-quite-separate' guestfs-actions.h and
guestfs-structs.h files.

.gitignore
generator/generator_c.ml
generator/generator_main.ml
src/Makefile.am
src/guestfs.h [deleted file]

index bf49d56..180e17e 100644 (file)
@@ -259,12 +259,11 @@ src/errnostring_gperf.c
 src/errnostring_gperf.gperf
 src/errnostring.c
 src/errnostring.h
-src/guestfs-actions.h
+src/guestfs.h
 src/guestfs-internal-actions.h
 src/guestfs_protocol.c
 src/guestfs_protocol.h
 src/guestfs_protocol.x
-src/guestfs-structs.h
 src/.libs/libguestfs.so
 src/libguestfs.syms
 *.swp
index a2f40da..d9d6055 100644 (file)
@@ -229,8 +229,7 @@ I<The caller must free the strings and the array after use>.\n\n"
 or NULL if there was an error.
 I<The caller must call C<guestfs_free_%s> after use>.\n\n" typ typ
          | RStructList (_, typ) ->
-             pr "This function returns a C<struct guestfs_%s_list *>
-(see E<lt>guestfs-structs.hE<gt>),
+             pr "This function returns a C<struct guestfs_%s_list *>,
 or NULL if there was an error.
 I<The caller must call C<guestfs_free_%s_list> after use>.\n\n" typ typ
          | RHashtable _ ->
@@ -337,22 +336,91 @@ and generate_availability_pod () =
   pr "=back\n";
   pr "\n"
 
-(* Generate the guestfs-structs.h file. *)
-and generate_structs_h () =
+(* Generate the guestfs.h file. *)
+and generate_guestfs_h () =
   generate_header CStyle LGPLv2plus;
 
-  (* This is a public exported header file containing various
-   * structures.  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 here is just so we don't have to
-   * export the whole of guestfs_protocol.h (which includes much
-   * unrelated and XDR-dependent stuff that we don't want to be
-   * public, or required by clients).
-   *
-   * To reiterate, we will pass these structures to and from the
-   * client with a simple assignment or memcpy, so the format
-   * must be identical to what rpcgen / the RFC defines.
+  pr "\
+/* ---------- IMPORTANT NOTE ----------
+ *
+ * All API documentation is in the manpage, 'guestfs(3)'.
+ * To read it, type:           man 3 guestfs
+ * Or read it online here:     http://libguestfs.org/guestfs.3.html
+ *
+ * Go and read it now, I'll be right here waiting for you
+ * when you come back.
+ *
+ * ------------------------------------
+ */
+
+#ifndef GUESTFS_H_
+#define GUESTFS_H_
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#include <stdint.h>
+#include <stdarg.h>
+#include <rpc/types.h>
+#include <rpc/xdr.h>
+
+/* The handle. */
+typedef struct guestfs_h guestfs_h;
+
+/* Connection management. */
+extern guestfs_h *guestfs_create (void);
+extern void guestfs_close (guestfs_h *g);
+
+/* Error handling. */
+extern const char *guestfs_last_error (guestfs_h *g);
+#define LIBGUESTFS_HAVE_LAST_ERRNO 1
+extern int guestfs_last_errno (guestfs_h *g);
+
+typedef void (*guestfs_error_handler_cb) (guestfs_h *g, void *opaque, const char *msg);
+typedef void (*guestfs_abort_cb) (void) __attribute__((__noreturn__));
+
+extern void guestfs_set_error_handler (guestfs_h *g, guestfs_error_handler_cb cb, void *opaque);
+extern guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g, void **opaque_rtn);
+
+extern void guestfs_set_out_of_memory_handler (guestfs_h *g, guestfs_abort_cb);
+extern guestfs_abort_cb guestfs_get_out_of_memory_handler (guestfs_h *g);
+
+/* Events. */
+typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque, char *buf, int len);
+typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);
+typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);
+typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);
+typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque, int proc_nr, int serial, uint64_t position, uint64_t total);
+
+extern void guestfs_set_log_message_callback (guestfs_h *g, guestfs_log_message_cb cb, void *opaque);
+extern void guestfs_set_subprocess_quit_callback (guestfs_h *g, guestfs_subprocess_quit_cb cb, void *opaque);
+extern void guestfs_set_launch_done_callback (guestfs_h *g, guestfs_launch_done_cb cb, void *opaque);
+#define LIBGUESTFS_HAVE_SET_CLOSE_CALLBACK 1
+extern void guestfs_set_close_callback (guestfs_h *g, guestfs_close_cb cb, void *opaque);
+#define LIBGUESTFS_HAVE_SET_PROGRESS_CALLBACK 1
+extern void guestfs_set_progress_callback (guestfs_h *g, guestfs_progress_cb cb, void *opaque);
+
+/* Private data area. */
+#define LIBGUESTFS_HAVE_SET_PRIVATE 1
+extern void guestfs_set_private (guestfs_h *g, const char *key, void *data);
+#define LIBGUESTFS_HAVE_GET_PRIVATE 1
+extern void *guestfs_get_private (guestfs_h *g, const char *key);
+
+/* Structures. */
+";
+
+  (* 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
+   * here is just so we don't have to export the whole of
+   * guestfs_protocol.h (which includes much unrelated and
+   * XDR-dependent stuff that we don't want to be public, or required
+   * by clients).
+   * 
+   * To reiterate, we will pass these structures to and from the client
+   * with a simple assignment or memcpy, so the format must be
+   * identical to what rpcgen / the RFC defines.
    *)
 
   (* Public structures. *)
@@ -383,11 +451,12 @@ and generate_structs_h () =
       pr "extern void guestfs_free_%s (struct guestfs_%s *);\n" typ typ;
       pr "extern void guestfs_free_%s_list (struct guestfs_%s_list *);\n" typ typ;
       pr "\n"
-  ) structs
+  ) structs;
+
+  pr "\
+/* Actions. */
+";
 
-(* Generate the guestfs-actions.h file. *)
-and generate_actions_h () =
-  generate_header CStyle LGPLv2plus;
   List.iter (
     fun (shortname, (ret, args, optargs as style), _, flags, _, _, _) ->
       let deprecated =
@@ -435,7 +504,27 @@ and generate_actions_h () =
           ~prefix:"guestfs_" ~suffix:"_argv" ~optarg_proto:Argv
           shortname style;
       );
-  ) all_functions_sorted
+  ) all_functions_sorted;
+
+  pr "\
+
+/* Private functions.
+ *
+ * These are NOT part of the public, stable API, and can change at any
+ * time!  We export them because they are used by some of the language
+ * bindings.
+ */
+extern void *guestfs_safe_malloc (guestfs_h *g, size_t nbytes);
+extern void *guestfs_safe_calloc (guestfs_h *g, size_t n, size_t s);
+extern const char *guestfs_tmpdir (void);
+/* End of private functions. */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GUESTFS_H_ */
+"
 
 (* Generate the guestfs-internal-actions.h file. *)
 and generate_internal_actions_h () =
index f384fac..bf1e8e0 100644 (file)
@@ -77,8 +77,7 @@ Run it from the top source directory using the command
   load_api_versions "src/api-support/added";
 
   output_to "src/guestfs_protocol.x" generate_xdr;
-  output_to "src/guestfs-structs.h" generate_structs_h;
-  output_to "src/guestfs-actions.h" generate_actions_h;
+  output_to "src/guestfs.h" generate_guestfs_h;
   output_to "src/guestfs-internal-actions.h" generate_internal_actions_h;
   output_to "src/actions.c" generate_client_actions;
   output_to "src/bindtests.c" generate_bindtests;
index 5f796a0..8781274 100644 (file)
@@ -19,8 +19,7 @@ include $(top_srcdir)/subdir-rules.mk
 
 generator_built = \
        guestfs_protocol.x \
-       guestfs-structs.h \
-       guestfs-actions.h \
+       guestfs.h
        guestfs-internal-actions.h \
        actions.c \
        bindtests.c \
@@ -47,7 +46,7 @@ EXTRA_DIST = \
        api-support/README \
        api-support/update-from-tarballs.sh
 
-include_HEADERS = guestfs.h guestfs-actions.h guestfs-structs.h
+include_HEADERS = guestfs.h
 
 lib_LTLIBRARIES = libguestfs.la
 
@@ -120,9 +119,7 @@ libguestfs_la_LDFLAGS += $(VERSION_SCRIPT_FLAGS)libguestfs.syms
 libguestfs_la_SOURCES = \
        guestfs.c \
        guestfs.h \
-       guestfs-actions.h \
        guestfs-internal.h \
-       guestfs-structs.h \
        guestfs_protocol.h \
        gettext.h \
        actions.c \
diff --git a/src/guestfs.h b/src/guestfs.h
deleted file mode 100644 (file)
index 0f4f9fd..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* libguestfs
- * Copyright (C) 2009-2010 Red Hat Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/* IMPORTANT NOTE:
- *
- * All API documentation is in the manpage, 'guestfs(3)'.
- * To read it, type:
- *   man 3 guestfs
- * Or read it online here:
- *   http://libguestfs.org/guestfs.3.html
- *
- * Go and read it now, I'll wait for you to come back.
- */
-
-#ifndef GUESTFS_H_
-#define GUESTFS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include <stdarg.h>
-
-typedef struct guestfs_h guestfs_h;
-
-/*--- Connection management ---*/
-extern guestfs_h *guestfs_create (void);
-extern void guestfs_close (guestfs_h *g);
-
-/*--- Error handling ---*/
-extern const char *guestfs_last_error (guestfs_h *g);
-#define LIBGUESTFS_HAVE_LAST_ERRNO 1
-extern int guestfs_last_errno (guestfs_h *g);
-
-typedef void (*guestfs_error_handler_cb) (guestfs_h *g, void *opaque, const char *msg);
-typedef void (*guestfs_abort_cb) (void) __attribute__((__noreturn__));
-
-extern void guestfs_set_error_handler (guestfs_h *g, guestfs_error_handler_cb cb, void *opaque);
-extern guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g, void **opaque_rtn);
-
-extern void guestfs_set_out_of_memory_handler (guestfs_h *g, guestfs_abort_cb);
-extern guestfs_abort_cb guestfs_get_out_of_memory_handler (guestfs_h *g);
-
-/*--- Events ---*/
-typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque, char *buf, int len);
-typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);
-typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);
-typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);
-typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque, int proc_nr, int serial, uint64_t position, uint64_t total);
-
-extern void guestfs_set_log_message_callback (guestfs_h *g, guestfs_log_message_cb cb, void *opaque);
-extern void guestfs_set_subprocess_quit_callback (guestfs_h *g, guestfs_subprocess_quit_cb cb, void *opaque);
-extern void guestfs_set_launch_done_callback (guestfs_h *g, guestfs_launch_done_cb cb, void *opaque);
-#define LIBGUESTFS_HAVE_SET_CLOSE_CALLBACK 1
-extern void guestfs_set_close_callback (guestfs_h *g, guestfs_close_cb cb, void *opaque);
-#define LIBGUESTFS_HAVE_SET_PROGRESS_CALLBACK 1
-extern void guestfs_set_progress_callback (guestfs_h *g, guestfs_progress_cb cb, void *opaque);
-
-/*--- Private data area ---*/
-#define LIBGUESTFS_HAVE_SET_PRIVATE 1
-extern void guestfs_set_private (guestfs_h *g, const char *key, void *data);
-#define LIBGUESTFS_HAVE_GET_PRIVATE 1
-extern void *guestfs_get_private (guestfs_h *g, const char *key);
-
-/*--- Structures and actions ---*/
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-#include <guestfs-structs.h>
-#include <guestfs-actions.h>
-
-/*--- Private ---
- *
- * These are NOT part of the public, stable API, and can change at any
- * time!  We export them because they are used by some of the language
- * bindings.
- */
-extern void *guestfs_safe_malloc (guestfs_h *g, size_t nbytes);
-extern void *guestfs_safe_calloc (guestfs_h *g, size_t n, size_t s);
-extern const char *guestfs_tmpdir (void);
-/* End of private functions. */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GUESTFS_H_ */