Switch all the links to https
[ocaml-libvirt.git] / libvirt / generator.pl
index 421592b..490ef9a 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # OCaml bindings for libvirt.
 # (C) Copyright 2007-2015 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
@@ -58,6 +58,8 @@ my @functions = (
       sig => "conn : int" },
     { name => "virConnectListDefinedStoragePools",
       sig => "conn, int : string array" },
+    { name => "virConnectNumOfSecrets", sig => "conn : int" },
+    { name => "virConnectListSecrets", sig => "conn, int : string array" },
     { name => "virConnectGetCapabilities", sig => "conn : string" },
     { name => "virConnectDomainEventDeregisterAny",
       sig => "conn, int : unit" },
@@ -169,6 +171,17 @@ my @functions = (
     { name => "virStoragePoolLookupByVolume",
       sig => "vol : pool from vol" },
 
+    { name => "virSecretFree", sig => "sec : free" },
+    { name => "virSecretUndefine", sig => "sec : unit" },
+    { name => "virSecretLookupByUUID", sig => "conn, uuid : sec" },
+    { name => "virSecretLookupByUUIDString", sig => "conn, string : sec" },
+    { name => "virSecretDefineXML", sig => "conn, string, 0 : sec" },
+    { name => "virSecretGetUUID", sig => "sec : uuid" },
+    { name => "virSecretGetUUIDString", sig => "sec : uuid string" },
+    { name => "virSecretGetUsageType", sig => "sec : int" },
+    { name => "virSecretGetUsageID", sig => "sec : static string" },
+    { name => "virSecretGetXMLDesc", sig => "sec, 0 : string" },
+
     );
 
 # Functions we haven't implemented anywhere yet but which are mentioned
@@ -200,7 +213,7 @@ print F <<'END';
 
 /* OCaml bindings for libvirt.
  * (C) Copyright 2007-2015 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
@@ -266,6 +279,7 @@ sub short_name_to_c_type
     elsif ($_ eq "net") { "virNetworkPtr" }
     elsif ($_ eq "pool") { "virStoragePoolPtr" }
     elsif ($_ eq "vol") { "virStorageVolPtr" }
+    elsif ($_ eq "sec") { "virSecretPtr" }
     else {
        die "unknown short name $_"
     }
@@ -343,17 +357,15 @@ sub gen_unpack_args
     if ($_ eq "conn") {
        "virConnectPtr conn = Connect_val (connv);"
     } elsif ($_ eq "dom") {
-       "virDomainPtr dom = Domain_val (domv);\n".
-       "  virConnectPtr conn = Connect_domv (domv);"
+       "virDomainPtr dom = Domain_val (domv);"
     } elsif ($_ eq "net") {
-       "virNetworkPtr net = Network_val (netv);\n".
-       "  virConnectPtr conn = Connect_netv (netv);"
+       "virNetworkPtr net = Network_val (netv);"
     } elsif ($_ eq "pool") {
-       "virStoragePoolPtr pool = Pool_val (poolv);\n".
-       "  virConnectPtr conn = Connect_polv (poolv);"
+       "virStoragePoolPtr pool = Pool_val (poolv);"
     } elsif ($_ eq "vol") {
-       "virStorageVolPtr vol = Volume_val (volv);\n".
-       "  virConnectPtr conn = Connect_volv (volv);"
+       "virStorageVolPtr vol = Volume_val (volv);"
+    } elsif ($_ eq "sec") {
+       "virSecretPtr sec = Secret_val (secv);"
     } else {
        die "unknown short name $_"
     }
@@ -369,6 +381,7 @@ sub gen_pack_result
     elsif ($_ eq "net") {  "rv = Val_network (r, connv);" }
     elsif ($_ eq "pool") { "rv = Val_pool (r, connv);" }
     elsif ($_ eq "vol") {  "rv = Val_volume (r, connv);" }
+    elsif ($_ eq "sec") {  "rv = Val_secret (r, connv);" }
     else {
        die "unknown short name $_"
     }
@@ -383,6 +396,7 @@ sub gen_free_arg
     elsif ($_ eq "net") {   "Network_val (netv) = NULL;" }
     elsif ($_ eq "pool") {  "Pool_val (poolv) = NULL;" }
     elsif ($_ eq "vol") {   "Volume_val (volv) = NULL;" }
+    elsif ($_ eq "sec") {   "Secret_val (secv) = NULL;" }
     else {
        die "unknown short name $_"
     }
@@ -402,7 +416,7 @@ sub gen_c_code
   char *r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   rv = caml_copy_string (r);
   free (r);
@@ -415,7 +429,7 @@ sub gen_c_code
   const char *r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   rv = caml_copy_string (r);
   CAMLreturn (rv);
@@ -426,7 +440,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_int (r));
 "
@@ -438,7 +452,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, uuid));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   /* UUIDs are byte arrays with a fixed length. */
   rv = caml_alloc_string (VIR_UUID_BUFLEN);
@@ -453,7 +467,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, uuid));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   rv = caml_copy_string (uuid);
   CAMLreturn (rv);
@@ -464,7 +478,7 @@ sub gen_c_code
   int r, b;
 
   NONBLOCKING (r = $c_name ($1, &b));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (b ? Val_true : Val_false);
 "
@@ -476,7 +490,7 @@ sub gen_c_code
   b = bv == Val_true ? 1 : 0;
 
   NONBLOCKING (r = $c_name ($1, b));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -485,7 +499,7 @@ sub gen_c_code
   CAMLlocal1 (rv);
   virConnectPtr conn = Connect_val (connv);
   int i = Int_val (iv);
-  int ids[i], r;
+  int *ids, r;
 
   /* Some libvirt List* functions still throw exceptions if i == 0,
    * so catch that and return an empty array directly.  This changes
@@ -497,12 +511,17 @@ sub gen_c_code
     CAMLreturn (rv);
   }
 
+  ids = malloc (sizeof (*ids) * i);
+  if (ids == NULL)
+    caml_raise_out_of_memory ();
+
   NONBLOCKING (r = $c_name (conn, ids, i));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR_CLEANUP (r == -1, free (ids), \"$c_name\");
 
   rv = caml_alloc (r, 0);
   for (i = 0; i < r; ++i)
     Store_field (rv, i, Val_int (ids[i]));
+  free (ids);
 
   CAMLreturn (rv);
 "
@@ -511,7 +530,7 @@ sub gen_c_code
   CAMLlocal2 (rv, strv);
   " . gen_unpack_args ($1) . "
   int i = Int_val (iv);
-  char *names[i];
+  char **names;
   int r;
 
   /* Some libvirt List* functions still throw exceptions if i == 0,
@@ -524,8 +543,12 @@ sub gen_c_code
     CAMLreturn (rv);
   }
 
+  names = malloc (sizeof (*names) * i);
+  if (names == NULL)
+    caml_raise_out_of_memory ();
+
   NONBLOCKING (r = $c_name ($1, names, i));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR_CLEANUP (r == -1, free (names), \"$c_name\");
 
   rv = caml_alloc (r, 0);
   for (i = 0; i < r; ++i) {
@@ -533,6 +556,7 @@ sub gen_c_code
     Store_field (rv, i, strv);
     free (names[i]);
   }
+  free (names);
 
   CAMLreturn (rv);
 "
@@ -543,7 +567,7 @@ sub gen_c_code
   char *r;
 
   NONBLOCKING (r = $c_name ($1, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   rv = caml_copy_string (r);
   free (r);
@@ -555,7 +579,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, 0));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -565,7 +589,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -575,7 +599,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   /* So that we don't double-free in the finalizer: */
   " . gen_free_arg ($1) . "
@@ -589,7 +613,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, str));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -601,7 +625,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, str, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -614,7 +638,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, str));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -629,7 +653,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, str, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -645,7 +669,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, str, u));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -659,7 +683,7 @@ sub gen_c_code
   int r;
 
   NONBLOCKING (r = $c_name ($1, i));
-  CHECK_ERROR (r == -1, conn, \"$c_name\");
+  CHECK_ERROR (r == -1, \"$c_name\");
 
   CAMLreturn (Val_unit);
 "
@@ -673,7 +697,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, i));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($3) . "
 
@@ -688,7 +712,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, uuid));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -702,7 +726,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -716,7 +740,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   " . gen_pack_result ($2) . "
 
@@ -731,7 +755,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, str));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   connv = Field ($3v, 1);
   " . gen_pack_result ($2) . "
@@ -747,7 +771,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, str, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   connv = Field ($3v, 1);
   " . gen_pack_result ($2) . "
@@ -762,7 +786,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1, 0));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   connv = Field ($3v, 1);
   " . gen_pack_result ($2) . "
@@ -777,7 +801,7 @@ sub gen_c_code
   $c_ret_type r;
 
   NONBLOCKING (r = $c_name ($1));
-  CHECK_ERROR (!r, conn, \"$c_name\");
+  CHECK_ERROR (!r, \"$c_name\");
 
   connv = Field ($3v, 1);
   " . gen_pack_result ($2) . "