* 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
int i = Int_val (iv);
int ids[i], r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListDomains (conn, ids, i));
CHECK_ERROR (r == -1, conn, "virConnectListDomains");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListDefinedDomains (conn, names, i));
CHECK_ERROR (r == -1, conn, "virConnectListDefinedDomains");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListNetworks (conn, names, i));
CHECK_ERROR (r == -1, conn, "virConnectListNetworks");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListDefinedNetworks (conn, names, i));
CHECK_ERROR (r == -1, conn, "virConnectListDefinedNetworks");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListStoragePools (conn, names, i));
CHECK_ERROR (r == -1, conn, "virConnectListStoragePools");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virConnectListDefinedStoragePools (conn, names, i));
CHECK_ERROR (r == -1, conn, "virConnectListDefinedStoragePools");
char *names[i];
int r;
+ /* Some libvirt List* functions still throw exceptions if i == 0,
+ * so catch that and return an empty array directly. This changes
+ * the semantics slightly (masking other failures) but it's
+ * unlikely anyone will care. RWMJ 2008/06/10
+ */
+ if (i == 0) {
+ rv = caml_alloc (0, 0);
+ CAMLreturn (rv);
+ }
+
NONBLOCKING (r = virStoragePoolListVolumes (pool, names, i));
CHECK_ERROR (r == -1, conn, "virStoragePoolListVolumes");