Switch all the links to https
[ocaml-libvirt.git] / libvirt / libvirt_c_prologue.c
index 451cc7c..8533618 100644 (file)
@@ -1,11 +1,12 @@
 /* OCaml bindings for libvirt.
  * (C) Copyright 2007 Richard W.M. Jones, Red Hat Inc.
- * http://libvirt.org/
+ * https://libvirt.org/
  *
  * 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.
+ * version 2 of the License, or (at your option) any later version,
+ * with the OCaml linking exception described in ../COPYING.LIB.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 /* Please read libvirt/README file. */
 
-static char *Optstring_val (value strv);
+static const char *Optstring_val (value strv);
 typedef value (*Val_ptr_t) (void *);
 static value Val_opt (void *ptr, Val_ptr_t Val_ptr);
+typedef value (*Val_const_ptr_t) (const void *);
+static value Val_opt_const (const void *ptr, Val_const_ptr_t Val_ptr);
 /*static value option_default (value option, value deflt);*/
-static void _raise_virterror (virConnectPtr conn, const char *fn) Noreturn;
-static void not_supported (const char *fn) Noreturn;
+static void _raise_virterror (const char *fn) Noreturn;
 static value Val_virterror (virErrorPtr err);
+static int _list_length (value listv);
+static value Val_virconnectcredential (const virConnectCredentialPtr cred);
 
 /* Use this around synchronous libvirt API calls to release the OCaml
  * lock, allowing other threads to run simultaneously.  'code' must not
  * perform any caml_* calls, run any OCaml code, or raise any exception.
- * http://web.archive.org/web/20030521020915/http://caml.inria.fr/archives/200106/msg00199.html
+ * https://web.archive.org/web/20030521020915/http://caml.inria.fr/archives/200106/msg00199.html
  */
 #define NONBLOCKING(code)                      \
   do {                                         \
@@ -39,33 +43,18 @@ static value Val_virterror (virErrorPtr err);
     caml_leave_blocking_section ();            \
   } while (0)
 
+/* Empty macro to use as empty parameter for other macros, since
+ * a null token as parameter when calling a macro is not allowed
+ * before C99.
+ */
+#define EMPTY
 /* Check error condition from a libvirt function, and automatically raise
  * an exception if one is found.
  */
-#define CHECK_ERROR(cond, conn, fn) \
-  do { if (cond) _raise_virterror (conn, fn); } while (0)
-
-/* For more about weak symbols, see:
- * http://kolpackov.net/pipermail/notes/2004-March/000006.html
- * We are using this to do runtime detection of library functions
- * so that if we dynamically link with an older version of
- * libvirt than we were compiled against, it won't fail (provided
- * libvirt >= 0.2.1 - we don't support anything older).
- */
-#ifdef __GNUC__
-#ifdef linux
-#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
-#define HAVE_WEAK_SYMBOLS 1
-#endif
-#endif
-#endif
-
-#ifdef HAVE_WEAK_SYMBOLS
-#define WEAK_SYMBOL_CHECK(sym)                         \
-  do { if (!sym) not_supported(#sym); } while (0)
-#else
-#define WEAK_SYMBOL_CHECK(sym)
-#endif /* HAVE_WEAK_SYMBOLS */
+#define CHECK_ERROR_CLEANUP(cond, cleanup, fn) \
+  do { if (cond) { cleanup; _raise_virterror (fn); } } while (0)
+#define CHECK_ERROR(cond, fn) \
+  CHECK_ERROR_CLEANUP(cond, EMPTY, fn)
 
 /*----------------------------------------------------------------------*/
 
@@ -105,71 +94,41 @@ static value Val_virterror (virErrorPtr err);
  * pairs.
  *
  * Update 2008/01: Storage pools and volumes work the same way as
- * domains and networks.  And jobs.
+ * domains and networks.
  */
 
 /* Unwrap a custom block. */
 #define Connect_val(rv) (*((virConnectPtr *)Data_custom_val(rv)))
 #define Dom_val(rv) (*((virDomainPtr *)Data_custom_val(rv)))
 #define Net_val(rv) (*((virNetworkPtr *)Data_custom_val(rv)))
-#ifdef HAVE_VIRSTORAGEPOOLPTR
 #define Pol_val(rv) (*((virStoragePoolPtr *)Data_custom_val(rv)))
-#endif
-#ifdef HAVE_VIRSTORAGEVOLPTR
 #define Vol_val(rv) (*((virStorageVolPtr *)Data_custom_val(rv)))
-#endif
-#ifdef HAVE_VIRJOBPTR
-#define Jb_val(rv) (*((virJobPtr *)Data_custom_val(rv)))
-#endif
+#define Sec_val(rv) (*((virSecretPtr *)Data_custom_val(rv)))
 
 /* Wrap up a pointer to something in a custom block. */
 static value Val_connect (virConnectPtr conn);
 static value Val_dom (virDomainPtr dom);
 static value Val_net (virNetworkPtr net);
-#ifdef HAVE_VIRSTORAGEPOOLPTR
 static value Val_pol (virStoragePoolPtr pool);
-#endif
-#ifdef HAVE_VIRSTORAGEVOLPTR
 static value Val_vol (virStorageVolPtr vol);
-#endif
-#ifdef HAVE_VIRJOBPTR
-static value Val_jb (virJobPtr jb);
-#endif
+static value Val_sec (virSecretPtr sec);
 
 /* Domains and networks are stored as pairs (dom/net, conn), so have
  * some convenience functions for unwrapping and wrapping them.
  */
 #define Domain_val(rv) (Dom_val(Field((rv),0)))
 #define Network_val(rv) (Net_val(Field((rv),0)))
-#ifdef HAVE_VIRSTORAGEPOOLPTR
 #define Pool_val(rv) (Pol_val(Field((rv),0)))
-#endif
-#ifdef HAVE_VIRSTORAGEVOLPTR
 #define Volume_val(rv) (Vol_val(Field((rv),0)))
-#endif
-#ifdef HAVE_VIRJOBPTR
-#define Job_val(rv) (Jb_val(Field((rv),0)))
-#endif
+#define Secret_val(rv) (Sec_val(Field((rv),0)))
 #define Connect_domv(rv) (Connect_val(Field((rv),1)))
 #define Connect_netv(rv) (Connect_val(Field((rv),1)))
-#ifdef HAVE_VIRSTORAGEPOOLPTR
 #define Connect_polv(rv) (Connect_val(Field((rv),1)))
-#endif
-#ifdef HAVE_VIRSTORAGEVOLPTR
 #define Connect_volv(rv) (Connect_val(Field((rv),1)))
-#endif
-#ifdef HAVE_VIRJOBPTR
-#define Connect_jobv(rv) (Connect_val(Field((rv),1)))
-#endif
+#define Connect_secv(rv) (Connect_val(Field((rv),1)))
 
 static value Val_domain (virDomainPtr dom, value connv);
 static value Val_network (virNetworkPtr net, value connv);
-#ifdef HAVE_VIRSTORAGEPOOLPTR
 static value Val_pool (virStoragePoolPtr pol, value connv);
-#endif
-#ifdef HAVE_VIRSTORAGEVOLPTR
 static value Val_volume (virStorageVolPtr vol, value connv);
-#endif
-#ifdef HAVE_VIRJOBPTR
-static value Val_job (virJobPtr jb, value connv);
-#endif
+static value Val_secret (virSecretPtr sec, value connv);