summaryrefslogtreecommitdiffstats
path: root/perl
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2009-07-02 11:38:36 +0100
committerRichard W.M. Jones <rjones@redhat.com>2009-07-02 11:51:16 +0100
commitb3cb0b04eb2d38ba32c160a83d8e3894b376907b (patch)
treee626b236e7d4bc5a4f50888b4f41aaad7c9bd844 /perl
parentda85ed425dc828ef4b8817f64d448101a88507b5 (diff)
downloadlibguestfs-b3cb0b04eb2d38ba32c160a83d8e3894b376907b.tar.gz
libguestfs-b3cb0b04eb2d38ba32c160a83d8e3894b376907b.tar.xz
libguestfs-b3cb0b04eb2d38ba32c160a83d8e3894b376907b.zip
Remove generated code from git.
Git users now require the OCaml compiler in order to regenerate the generated code after a checkout. Generated code will remain in the tarball, so users of the source tarball will not need the OCaml compiler.
Diffstat (limited to 'perl')
-rw-r--r--perl/Guestfs.xs2994
-rw-r--r--perl/bindtests.pl40
-rw-r--r--perl/lib/Sys/Guestfs.pm1658
3 files changed, 0 insertions, 4692 deletions
diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs
deleted file mode 100644
index e1cd84a3..00000000
--- a/perl/Guestfs.xs
+++ /dev/null
@@ -1,2994 +0,0 @@
-/* libguestfs generated file
- * WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
- * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
- *
- * Copyright (C) 2009 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
- */
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#include <guestfs.h>
-
-#ifndef PRId64
-#define PRId64 "lld"
-#endif
-
-static SV *
-my_newSVll(long long val) {
-#ifdef USE_64_BIT_ALL
- return newSViv(val);
-#else
- char buf[100];
- int len;
- len = snprintf(buf, 100, "%" PRId64, val);
- return newSVpv(buf, len);
-#endif
-}
-
-#ifndef PRIu64
-#define PRIu64 "llu"
-#endif
-
-static SV *
-my_newSVull(unsigned long long val) {
-#ifdef USE_64_BIT_ALL
- return newSVuv(val);
-#else
- char buf[100];
- int len;
- len = snprintf(buf, 100, "%" PRIu64, val);
- return newSVpv(buf, len);
-#endif
-}
-
-/* http://www.perlmonks.org/?node_id=680842 */
-static char **
-XS_unpack_charPtrPtr (SV *arg) {
- char **ret;
- AV *av;
- I32 i;
-
- if (!arg || !SvOK (arg) || !SvROK (arg) || SvTYPE (SvRV (arg)) != SVt_PVAV)
- croak ("array reference expected");
-
- av = (AV *)SvRV (arg);
- ret = malloc ((av_len (av) + 1 + 1) * sizeof (char *));
- if (!ret)
- croak ("malloc failed");
-
- for (i = 0; i <= av_len (av); i++) {
- SV **elem = av_fetch (av, i, 0);
-
- if (!elem || !*elem)
- croak ("missing element in list");
-
- ret[i] = SvPV_nolen (*elem);
- }
-
- ret[i] = NULL;
-
- return ret;
-}
-
-MODULE = Sys::Guestfs PACKAGE = Sys::Guestfs
-
-PROTOTYPES: ENABLE
-
-guestfs_h *
-_create ()
- CODE:
- RETVAL = guestfs_create ();
- if (!RETVAL)
- croak ("could not create guestfs handle");
- guestfs_set_error_handler (RETVAL, NULL, NULL);
- OUTPUT:
- RETVAL
-
-void
-DESTROY (g)
- guestfs_h *g;
- PPCODE:
- guestfs_close (g);
-
-void
-test0 (g, str, optstr, strlist, b, integer, filein, fileout)
- guestfs_h *g;
- char *str;
- char *optstr = SvOK(ST(2)) ? SvPV_nolen(ST(2)) : NULL;
- char **strlist;
- int b;
- int integer;
- char *filein;
- char *fileout;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_test0 (g, str, optstr, strlist, b, integer, filein, fileout);
- free (strlist);
- if (r == -1)
- croak ("test0: %s", guestfs_last_error (g));
-
-SV *
-test0rint (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- int valout;
- CODE:
- valout = guestfs_test0rint (g, val);
- if (valout == -1)
- croak ("test0rint: %s", guestfs_last_error (g));
- RETVAL = newSViv (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rinterr (g)
- guestfs_h *g;
-PREINIT:
- int valout;
- CODE:
- valout = guestfs_test0rinterr (g);
- if (valout == -1)
- croak ("test0rinterr: %s", guestfs_last_error (g));
- RETVAL = newSViv (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rint64 (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- int64_t valout;
- CODE:
- valout = guestfs_test0rint64 (g, val);
- if (valout == -1)
- croak ("test0rint64: %s", guestfs_last_error (g));
- RETVAL = my_newSVll (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rint64err (g)
- guestfs_h *g;
-PREINIT:
- int64_t valout;
- CODE:
- valout = guestfs_test0rint64err (g);
- if (valout == -1)
- croak ("test0rint64err: %s", guestfs_last_error (g));
- RETVAL = my_newSVll (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rbool (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- int valout;
- CODE:
- valout = guestfs_test0rbool (g, val);
- if (valout == -1)
- croak ("test0rbool: %s", guestfs_last_error (g));
- RETVAL = newSViv (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rboolerr (g)
- guestfs_h *g;
-PREINIT:
- int valout;
- CODE:
- valout = guestfs_test0rboolerr (g);
- if (valout == -1)
- croak ("test0rboolerr: %s", guestfs_last_error (g));
- RETVAL = newSViv (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rconststring (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- const char *valout;
- CODE:
- valout = guestfs_test0rconststring (g, val);
- if (valout == NULL)
- croak ("test0rconststring: %s", guestfs_last_error (g));
- RETVAL = newSVpv (valout, 0);
- OUTPUT:
- RETVAL
-
-SV *
-test0rconststringerr (g)
- guestfs_h *g;
-PREINIT:
- const char *valout;
- CODE:
- valout = guestfs_test0rconststringerr (g);
- if (valout == NULL)
- croak ("test0rconststringerr: %s", guestfs_last_error (g));
- RETVAL = newSVpv (valout, 0);
- OUTPUT:
- RETVAL
-
-SV *
-test0rstring (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- char *valout;
- CODE:
- valout = guestfs_test0rstring (g, val);
- if (valout == NULL)
- croak ("test0rstring: %s", guestfs_last_error (g));
- RETVAL = newSVpv (valout, 0);
- free (valout);
- OUTPUT:
- RETVAL
-
-SV *
-test0rstringerr (g)
- guestfs_h *g;
-PREINIT:
- char *valout;
- CODE:
- valout = guestfs_test0rstringerr (g);
- if (valout == NULL)
- croak ("test0rstringerr: %s", guestfs_last_error (g));
- RETVAL = newSVpv (valout, 0);
- free (valout);
- OUTPUT:
- RETVAL
-
-void
-test0rstringlist (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- char **valout;
- int i, n;
- PPCODE:
- valout = guestfs_test0rstringlist (g, val);
- if (valout == NULL)
- croak ("test0rstringlist: %s", guestfs_last_error (g));
- for (n = 0; valout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (valout[i], 0)));
- free (valout[i]);
- }
- free (valout);
-
-void
-test0rstringlisterr (g)
- guestfs_h *g;
-PREINIT:
- char **valout;
- int i, n;
- PPCODE:
- valout = guestfs_test0rstringlisterr (g);
- if (valout == NULL)
- croak ("test0rstringlisterr: %s", guestfs_last_error (g));
- for (n = 0; valout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (valout[i], 0)));
- free (valout[i]);
- }
- free (valout);
-
-void
-test0rintbool (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_int_bool *r;
- PPCODE:
- r = guestfs_test0rintbool (g, val);
- if (r == NULL)
- croak ("test0rintbool: %s", guestfs_last_error (g));
- EXTEND (SP, 2);
- PUSHs (sv_2mortal (newSViv (r->i)));
- PUSHs (sv_2mortal (newSViv (r->b)));
- guestfs_free_int_bool (r);
-
-void
-test0rintboolerr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_int_bool *r;
- PPCODE:
- r = guestfs_test0rintboolerr (g);
- if (r == NULL)
- croak ("test0rintboolerr: %s", guestfs_last_error (g));
- EXTEND (SP, 2);
- PUSHs (sv_2mortal (newSViv (r->i)));
- PUSHs (sv_2mortal (newSViv (r->b)));
- guestfs_free_int_bool (r);
-
-void
-test0rpvlist (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_lvm_pv_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rpvlist (g, val);
- if (valout == NULL)
- croak ("test0rpvlist: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "pv_name", 7, newSVpv (valout->val[i].pv_name, 0), 0);
- (void) hv_store (hv, "pv_uuid", 7, newSVpv (valout->val[i].pv_uuid, 32), 0);
- (void) hv_store (hv, "pv_fmt", 6, newSVpv (valout->val[i].pv_fmt, 0), 0);
- (void) hv_store (hv, "pv_size", 7, my_newSVull (valout->val[i].pv_size), 0);
- (void) hv_store (hv, "dev_size", 8, my_newSVull (valout->val[i].dev_size), 0);
- (void) hv_store (hv, "pv_free", 7, my_newSVull (valout->val[i].pv_free), 0);
- (void) hv_store (hv, "pv_used", 7, my_newSVull (valout->val[i].pv_used), 0);
- (void) hv_store (hv, "pv_attr", 7, newSVpv (valout->val[i].pv_attr, 0), 0);
- (void) hv_store (hv, "pv_pe_count", 11, my_newSVll (valout->val[i].pv_pe_count), 0);
- (void) hv_store (hv, "pv_pe_alloc_count", 17, my_newSVll (valout->val[i].pv_pe_alloc_count), 0);
- (void) hv_store (hv, "pv_tags", 7, newSVpv (valout->val[i].pv_tags, 0), 0);
- (void) hv_store (hv, "pe_start", 8, my_newSVull (valout->val[i].pe_start), 0);
- (void) hv_store (hv, "pv_mda_count", 12, my_newSVll (valout->val[i].pv_mda_count), 0);
- (void) hv_store (hv, "pv_mda_free", 11, my_newSVull (valout->val[i].pv_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_pv_list (valout);
-
-void
-test0rpvlisterr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_pv_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rpvlisterr (g);
- if (valout == NULL)
- croak ("test0rpvlisterr: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "pv_name", 7, newSVpv (valout->val[i].pv_name, 0), 0);
- (void) hv_store (hv, "pv_uuid", 7, newSVpv (valout->val[i].pv_uuid, 32), 0);
- (void) hv_store (hv, "pv_fmt", 6, newSVpv (valout->val[i].pv_fmt, 0), 0);
- (void) hv_store (hv, "pv_size", 7, my_newSVull (valout->val[i].pv_size), 0);
- (void) hv_store (hv, "dev_size", 8, my_newSVull (valout->val[i].dev_size), 0);
- (void) hv_store (hv, "pv_free", 7, my_newSVull (valout->val[i].pv_free), 0);
- (void) hv_store (hv, "pv_used", 7, my_newSVull (valout->val[i].pv_used), 0);
- (void) hv_store (hv, "pv_attr", 7, newSVpv (valout->val[i].pv_attr, 0), 0);
- (void) hv_store (hv, "pv_pe_count", 11, my_newSVll (valout->val[i].pv_pe_count), 0);
- (void) hv_store (hv, "pv_pe_alloc_count", 17, my_newSVll (valout->val[i].pv_pe_alloc_count), 0);
- (void) hv_store (hv, "pv_tags", 7, newSVpv (valout->val[i].pv_tags, 0), 0);
- (void) hv_store (hv, "pe_start", 8, my_newSVull (valout->val[i].pe_start), 0);
- (void) hv_store (hv, "pv_mda_count", 12, my_newSVll (valout->val[i].pv_mda_count), 0);
- (void) hv_store (hv, "pv_mda_free", 11, my_newSVull (valout->val[i].pv_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_pv_list (valout);
-
-void
-test0rvglist (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_lvm_vg_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rvglist (g, val);
- if (valout == NULL)
- croak ("test0rvglist: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "vg_name", 7, newSVpv (valout->val[i].vg_name, 0), 0);
- (void) hv_store (hv, "vg_uuid", 7, newSVpv (valout->val[i].vg_uuid, 32), 0);
- (void) hv_store (hv, "vg_fmt", 6, newSVpv (valout->val[i].vg_fmt, 0), 0);
- (void) hv_store (hv, "vg_attr", 7, newSVpv (valout->val[i].vg_attr, 0), 0);
- (void) hv_store (hv, "vg_size", 7, my_newSVull (valout->val[i].vg_size), 0);
- (void) hv_store (hv, "vg_free", 7, my_newSVull (valout->val[i].vg_free), 0);
- (void) hv_store (hv, "vg_sysid", 8, newSVpv (valout->val[i].vg_sysid, 0), 0);
- (void) hv_store (hv, "vg_extent_size", 14, my_newSVull (valout->val[i].vg_extent_size), 0);
- (void) hv_store (hv, "vg_extent_count", 15, my_newSVll (valout->val[i].vg_extent_count), 0);
- (void) hv_store (hv, "vg_free_count", 13, my_newSVll (valout->val[i].vg_free_count), 0);
- (void) hv_store (hv, "max_lv", 6, my_newSVll (valout->val[i].max_lv), 0);
- (void) hv_store (hv, "max_pv", 6, my_newSVll (valout->val[i].max_pv), 0);
- (void) hv_store (hv, "pv_count", 8, my_newSVll (valout->val[i].pv_count), 0);
- (void) hv_store (hv, "lv_count", 8, my_newSVll (valout->val[i].lv_count), 0);
- (void) hv_store (hv, "snap_count", 10, my_newSVll (valout->val[i].snap_count), 0);
- (void) hv_store (hv, "vg_seqno", 8, my_newSVll (valout->val[i].vg_seqno), 0);
- (void) hv_store (hv, "vg_tags", 7, newSVpv (valout->val[i].vg_tags, 0), 0);
- (void) hv_store (hv, "vg_mda_count", 12, my_newSVll (valout->val[i].vg_mda_count), 0);
- (void) hv_store (hv, "vg_mda_free", 11, my_newSVull (valout->val[i].vg_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_vg_list (valout);
-
-void
-test0rvglisterr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_vg_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rvglisterr (g);
- if (valout == NULL)
- croak ("test0rvglisterr: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "vg_name", 7, newSVpv (valout->val[i].vg_name, 0), 0);
- (void) hv_store (hv, "vg_uuid", 7, newSVpv (valout->val[i].vg_uuid, 32), 0);
- (void) hv_store (hv, "vg_fmt", 6, newSVpv (valout->val[i].vg_fmt, 0), 0);
- (void) hv_store (hv, "vg_attr", 7, newSVpv (valout->val[i].vg_attr, 0), 0);
- (void) hv_store (hv, "vg_size", 7, my_newSVull (valout->val[i].vg_size), 0);
- (void) hv_store (hv, "vg_free", 7, my_newSVull (valout->val[i].vg_free), 0);
- (void) hv_store (hv, "vg_sysid", 8, newSVpv (valout->val[i].vg_sysid, 0), 0);
- (void) hv_store (hv, "vg_extent_size", 14, my_newSVull (valout->val[i].vg_extent_size), 0);
- (void) hv_store (hv, "vg_extent_count", 15, my_newSVll (valout->val[i].vg_extent_count), 0);
- (void) hv_store (hv, "vg_free_count", 13, my_newSVll (valout->val[i].vg_free_count), 0);
- (void) hv_store (hv, "max_lv", 6, my_newSVll (valout->val[i].max_lv), 0);
- (void) hv_store (hv, "max_pv", 6, my_newSVll (valout->val[i].max_pv), 0);
- (void) hv_store (hv, "pv_count", 8, my_newSVll (valout->val[i].pv_count), 0);
- (void) hv_store (hv, "lv_count", 8, my_newSVll (valout->val[i].lv_count), 0);
- (void) hv_store (hv, "snap_count", 10, my_newSVll (valout->val[i].snap_count), 0);
- (void) hv_store (hv, "vg_seqno", 8, my_newSVll (valout->val[i].vg_seqno), 0);
- (void) hv_store (hv, "vg_tags", 7, newSVpv (valout->val[i].vg_tags, 0), 0);
- (void) hv_store (hv, "vg_mda_count", 12, my_newSVll (valout->val[i].vg_mda_count), 0);
- (void) hv_store (hv, "vg_mda_free", 11, my_newSVull (valout->val[i].vg_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_vg_list (valout);
-
-void
-test0rlvlist (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_lvm_lv_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rlvlist (g, val);
- if (valout == NULL)
- croak ("test0rlvlist: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "lv_name", 7, newSVpv (valout->val[i].lv_name, 0), 0);
- (void) hv_store (hv, "lv_uuid", 7, newSVpv (valout->val[i].lv_uuid, 32), 0);
- (void) hv_store (hv, "lv_attr", 7, newSVpv (valout->val[i].lv_attr, 0), 0);
- (void) hv_store (hv, "lv_major", 8, my_newSVll (valout->val[i].lv_major), 0);
- (void) hv_store (hv, "lv_minor", 8, my_newSVll (valout->val[i].lv_minor), 0);
- (void) hv_store (hv, "lv_kernel_major", 15, my_newSVll (valout->val[i].lv_kernel_major), 0);
- (void) hv_store (hv, "lv_kernel_minor", 15, my_newSVll (valout->val[i].lv_kernel_minor), 0);
- (void) hv_store (hv, "lv_size", 7, my_newSVull (valout->val[i].lv_size), 0);
- (void) hv_store (hv, "seg_count", 9, my_newSVll (valout->val[i].seg_count), 0);
- (void) hv_store (hv, "origin", 6, newSVpv (valout->val[i].origin, 0), 0);
- (void) hv_store (hv, "snap_percent", 12, newSVnv (valout->val[i].snap_percent), 0);
- (void) hv_store (hv, "copy_percent", 12, newSVnv (valout->val[i].copy_percent), 0);
- (void) hv_store (hv, "move_pv", 7, newSVpv (valout->val[i].move_pv, 0), 0);
- (void) hv_store (hv, "lv_tags", 7, newSVpv (valout->val[i].lv_tags, 0), 0);
- (void) hv_store (hv, "mirror_log", 10, newSVpv (valout->val[i].mirror_log, 0), 0);
- (void) hv_store (hv, "modules", 7, newSVpv (valout->val[i].modules, 0), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_lv_list (valout);
-
-void
-test0rlvlisterr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_lv_list *valout;
- int i;
- HV *hv;
- PPCODE:
- valout = guestfs_test0rlvlisterr (g);
- if (valout == NULL)
- croak ("test0rlvlisterr: %s", guestfs_last_error (g));
- EXTEND (SP, valout->len);
- for (i = 0; i < valout->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "lv_name", 7, newSVpv (valout->val[i].lv_name, 0), 0);
- (void) hv_store (hv, "lv_uuid", 7, newSVpv (valout->val[i].lv_uuid, 32), 0);
- (void) hv_store (hv, "lv_attr", 7, newSVpv (valout->val[i].lv_attr, 0), 0);
- (void) hv_store (hv, "lv_major", 8, my_newSVll (valout->val[i].lv_major), 0);
- (void) hv_store (hv, "lv_minor", 8, my_newSVll (valout->val[i].lv_minor), 0);
- (void) hv_store (hv, "lv_kernel_major", 15, my_newSVll (valout->val[i].lv_kernel_major), 0);
- (void) hv_store (hv, "lv_kernel_minor", 15, my_newSVll (valout->val[i].lv_kernel_minor), 0);
- (void) hv_store (hv, "lv_size", 7, my_newSVull (valout->val[i].lv_size), 0);
- (void) hv_store (hv, "seg_count", 9, my_newSVll (valout->val[i].seg_count), 0);
- (void) hv_store (hv, "origin", 6, newSVpv (valout->val[i].origin, 0), 0);
- (void) hv_store (hv, "snap_percent", 12, newSVnv (valout->val[i].snap_percent), 0);
- (void) hv_store (hv, "copy_percent", 12, newSVnv (valout->val[i].copy_percent), 0);
- (void) hv_store (hv, "move_pv", 7, newSVpv (valout->val[i].move_pv, 0), 0);
- (void) hv_store (hv, "lv_tags", 7, newSVpv (valout->val[i].lv_tags, 0), 0);
- (void) hv_store (hv, "mirror_log", 10, newSVpv (valout->val[i].mirror_log, 0), 0);
- (void) hv_store (hv, "modules", 7, newSVpv (valout->val[i].modules, 0), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_lv_list (valout);
-
-void
-test0rstat (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_stat *valout;
- PPCODE:
- valout = guestfs_test0rstat (g, val);
- if (valout == NULL)
- croak ("test0rstat: %s", guestfs_last_error (g));
- EXTEND (SP, 13);
- PUSHs (sv_2mortal (my_newSVll (valout->dev)));
- PUSHs (sv_2mortal (my_newSVll (valout->ino)));
- PUSHs (sv_2mortal (my_newSVll (valout->mode)));
- PUSHs (sv_2mortal (my_newSVll (valout->nlink)));
- PUSHs (sv_2mortal (my_newSVll (valout->uid)));
- PUSHs (sv_2mortal (my_newSVll (valout->gid)));
- PUSHs (sv_2mortal (my_newSVll (valout->rdev)));
- PUSHs (sv_2mortal (my_newSVll (valout->size)));
- PUSHs (sv_2mortal (my_newSVll (valout->blksize)));
- PUSHs (sv_2mortal (my_newSVll (valout->blocks)));
- PUSHs (sv_2mortal (my_newSVll (valout->atime)));
- PUSHs (sv_2mortal (my_newSVll (valout->mtime)));
- PUSHs (sv_2mortal (my_newSVll (valout->ctime)));
- free (valout);
-
-void
-test0rstaterr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_stat *valout;
- PPCODE:
- valout = guestfs_test0rstaterr (g);
- if (valout == NULL)
- croak ("test0rstaterr: %s", guestfs_last_error (g));
- EXTEND (SP, 13);
- PUSHs (sv_2mortal (my_newSVll (valout->dev)));
- PUSHs (sv_2mortal (my_newSVll (valout->ino)));
- PUSHs (sv_2mortal (my_newSVll (valout->mode)));
- PUSHs (sv_2mortal (my_newSVll (valout->nlink)));
- PUSHs (sv_2mortal (my_newSVll (valout->uid)));
- PUSHs (sv_2mortal (my_newSVll (valout->gid)));
- PUSHs (sv_2mortal (my_newSVll (valout->rdev)));
- PUSHs (sv_2mortal (my_newSVll (valout->size)));
- PUSHs (sv_2mortal (my_newSVll (valout->blksize)));
- PUSHs (sv_2mortal (my_newSVll (valout->blocks)));
- PUSHs (sv_2mortal (my_newSVll (valout->atime)));
- PUSHs (sv_2mortal (my_newSVll (valout->mtime)));
- PUSHs (sv_2mortal (my_newSVll (valout->ctime)));
- free (valout);
-
-void
-test0rstatvfs (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- struct guestfs_statvfs *valout;
- PPCODE:
- valout = guestfs_test0rstatvfs (g, val);
- if (valout == NULL)
- croak ("test0rstatvfs: %s", guestfs_last_error (g));
- EXTEND (SP, 11);
- PUSHs (sv_2mortal (my_newSVll (valout->bsize)));
- PUSHs (sv_2mortal (my_newSVll (valout->frsize)));
- PUSHs (sv_2mortal (my_newSVll (valout->blocks)));
- PUSHs (sv_2mortal (my_newSVll (valout->bfree)));
- PUSHs (sv_2mortal (my_newSVll (valout->bavail)));
- PUSHs (sv_2mortal (my_newSVll (valout->files)));
- PUSHs (sv_2mortal (my_newSVll (valout->ffree)));
- PUSHs (sv_2mortal (my_newSVll (valout->favail)));
- PUSHs (sv_2mortal (my_newSVll (valout->fsid)));
- PUSHs (sv_2mortal (my_newSVll (valout->flag)));
- PUSHs (sv_2mortal (my_newSVll (valout->namemax)));
- free (valout);
-
-void
-test0rstatvfserr (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_statvfs *valout;
- PPCODE:
- valout = guestfs_test0rstatvfserr (g);
- if (valout == NULL)
- croak ("test0rstatvfserr: %s", guestfs_last_error (g));
- EXTEND (SP, 11);
- PUSHs (sv_2mortal (my_newSVll (valout->bsize)));
- PUSHs (sv_2mortal (my_newSVll (valout->frsize)));
- PUSHs (sv_2mortal (my_newSVll (valout->blocks)));
- PUSHs (sv_2mortal (my_newSVll (valout->bfree)));
- PUSHs (sv_2mortal (my_newSVll (valout->bavail)));
- PUSHs (sv_2mortal (my_newSVll (valout->files)));
- PUSHs (sv_2mortal (my_newSVll (valout->ffree)));
- PUSHs (sv_2mortal (my_newSVll (valout->favail)));
- PUSHs (sv_2mortal (my_newSVll (valout->fsid)));
- PUSHs (sv_2mortal (my_newSVll (valout->flag)));
- PUSHs (sv_2mortal (my_newSVll (valout->namemax)));
- free (valout);
-
-void
-test0rhashtable (g, val)
- guestfs_h *g;
- char *val;
-PREINIT:
- char **valout;
- int i, n;
- PPCODE:
- valout = guestfs_test0rhashtable (g, val);
- if (valout == NULL)
- croak ("test0rhashtable: %s", guestfs_last_error (g));
- for (n = 0; valout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (valout[i], 0)));
- free (valout[i]);
- }
- free (valout);
-
-void
-test0rhashtableerr (g)
- guestfs_h *g;
-PREINIT:
- char **valout;
- int i, n;
- PPCODE:
- valout = guestfs_test0rhashtableerr (g);
- if (valout == NULL)
- croak ("test0rhashtableerr: %s", guestfs_last_error (g));
- for (n = 0; valout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (valout[i], 0)));
- free (valout[i]);
- }
- free (valout);
-
-void
-launch (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_launch (g);
- if (r == -1)
- croak ("launch: %s", guestfs_last_error (g));
-
-void
-wait_ready (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_wait_ready (g);
- if (r == -1)
- croak ("wait_ready: %s", guestfs_last_error (g));
-
-void
-kill_subprocess (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_kill_subprocess (g);
- if (r == -1)
- croak ("kill_subprocess: %s", guestfs_last_error (g));
-
-void
-add_drive (g, filename)
- guestfs_h *g;
- char *filename;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_add_drive (g, filename);
- if (r == -1)
- croak ("add_drive: %s", guestfs_last_error (g));
-
-void
-add_cdrom (g, filename)
- guestfs_h *g;
- char *filename;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_add_cdrom (g, filename);
- if (r == -1)
- croak ("add_cdrom: %s", guestfs_last_error (g));
-
-void
-add_drive_ro (g, filename)
- guestfs_h *g;
- char *filename;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_add_drive_ro (g, filename);
- if (r == -1)
- croak ("add_drive_ro: %s", guestfs_last_error (g));
-
-void
-config (g, qemuparam, qemuvalue)
- guestfs_h *g;
- char *qemuparam;
- char *qemuvalue = SvOK(ST(2)) ? SvPV_nolen(ST(2)) : NULL;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_config (g, qemuparam, qemuvalue);
- if (r == -1)
- croak ("config: %s", guestfs_last_error (g));
-
-void
-set_qemu (g, qemu)
- guestfs_h *g;
- char *qemu;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_qemu (g, qemu);
- if (r == -1)
- croak ("set_qemu: %s", guestfs_last_error (g));
-
-SV *
-get_qemu (g)
- guestfs_h *g;
-PREINIT:
- const char *qemu;
- CODE:
- qemu = guestfs_get_qemu (g);
- if (qemu == NULL)
- croak ("get_qemu: %s", guestfs_last_error (g));
- RETVAL = newSVpv (qemu, 0);
- OUTPUT:
- RETVAL
-
-void
-set_path (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_path (g, path);
- if (r == -1)
- croak ("set_path: %s", guestfs_last_error (g));
-
-SV *
-get_path (g)
- guestfs_h *g;
-PREINIT:
- const char *path;
- CODE:
- path = guestfs_get_path (g);
- if (path == NULL)
- croak ("get_path: %s", guestfs_last_error (g));
- RETVAL = newSVpv (path, 0);
- OUTPUT:
- RETVAL
-
-void
-set_append (g, append)
- guestfs_h *g;
- char *append;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_append (g, append);
- if (r == -1)
- croak ("set_append: %s", guestfs_last_error (g));
-
-SV *
-get_append (g)
- guestfs_h *g;
-PREINIT:
- const char *append;
- CODE:
- append = guestfs_get_append (g);
- if (append == NULL)
- croak ("get_append: %s", guestfs_last_error (g));
- RETVAL = newSVpv (append, 0);
- OUTPUT:
- RETVAL
-
-void
-set_autosync (g, autosync)
- guestfs_h *g;
- int autosync;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_autosync (g, autosync);
- if (r == -1)
- croak ("set_autosync: %s", guestfs_last_error (g));
-
-SV *
-get_autosync (g)
- guestfs_h *g;
-PREINIT:
- int autosync;
- CODE:
- autosync = guestfs_get_autosync (g);
- if (autosync == -1)
- croak ("get_autosync: %s", guestfs_last_error (g));
- RETVAL = newSViv (autosync);
- OUTPUT:
- RETVAL
-
-void
-set_verbose (g, verbose)
- guestfs_h *g;
- int verbose;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_verbose (g, verbose);
- if (r == -1)
- croak ("set_verbose: %s", guestfs_last_error (g));
-
-SV *
-get_verbose (g)
- guestfs_h *g;
-PREINIT:
- int verbose;
- CODE:
- verbose = guestfs_get_verbose (g);
- if (verbose == -1)
- croak ("get_verbose: %s", guestfs_last_error (g));
- RETVAL = newSViv (verbose);
- OUTPUT:
- RETVAL
-
-SV *
-is_ready (g)
- guestfs_h *g;
-PREINIT:
- int ready;
- CODE:
- ready = guestfs_is_ready (g);
- if (ready == -1)
- croak ("is_ready: %s", guestfs_last_error (g));
- RETVAL = newSViv (ready);
- OUTPUT:
- RETVAL
-
-SV *
-is_config (g)
- guestfs_h *g;
-PREINIT:
- int config;
- CODE:
- config = guestfs_is_config (g);
- if (config == -1)
- croak ("is_config: %s", guestfs_last_error (g));
- RETVAL = newSViv (config);
- OUTPUT:
- RETVAL
-
-SV *
-is_launching (g)
- guestfs_h *g;
-PREINIT:
- int launching;
- CODE:
- launching = guestfs_is_launching (g);
- if (launching == -1)
- croak ("is_launching: %s", guestfs_last_error (g));
- RETVAL = newSViv (launching);
- OUTPUT:
- RETVAL
-
-SV *
-is_busy (g)
- guestfs_h *g;
-PREINIT:
- int busy;
- CODE:
- busy = guestfs_is_busy (g);
- if (busy == -1)
- croak ("is_busy: %s", guestfs_last_error (g));
- RETVAL = newSViv (busy);
- OUTPUT:
- RETVAL
-
-SV *
-get_state (g)
- guestfs_h *g;
-PREINIT:
- int state;
- CODE:
- state = guestfs_get_state (g);
- if (state == -1)
- croak ("get_state: %s", guestfs_last_error (g));
- RETVAL = newSViv (state);
- OUTPUT:
- RETVAL
-
-void
-set_busy (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_busy (g);
- if (r == -1)
- croak ("set_busy: %s", guestfs_last_error (g));
-
-void
-set_ready (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_ready (g);
- if (r == -1)
- croak ("set_ready: %s", guestfs_last_error (g));
-
-void
-end_busy (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_end_busy (g);
- if (r == -1)
- croak ("end_busy: %s", guestfs_last_error (g));
-
-void
-set_memsize (g, memsize)
- guestfs_h *g;
- int memsize;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_memsize (g, memsize);
- if (r == -1)
- croak ("set_memsize: %s", guestfs_last_error (g));
-
-SV *
-get_memsize (g)
- guestfs_h *g;
-PREINIT:
- int memsize;
- CODE:
- memsize = guestfs_get_memsize (g);
- if (memsize == -1)
- croak ("get_memsize: %s", guestfs_last_error (g));
- RETVAL = newSViv (memsize);
- OUTPUT:
- RETVAL
-
-void
-mount (g, device, mountpoint)
- guestfs_h *g;
- char *device;
- char *mountpoint;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mount (g, device, mountpoint);
- if (r == -1)
- croak ("mount: %s", guestfs_last_error (g));
-
-void
-sync (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_sync (g);
- if (r == -1)
- croak ("sync: %s", guestfs_last_error (g));
-
-void
-touch (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_touch (g, path);
- if (r == -1)
- croak ("touch: %s", guestfs_last_error (g));
-
-SV *
-cat (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char *content;
- CODE:
- content = guestfs_cat (g, path);
- if (content == NULL)
- croak ("cat: %s", guestfs_last_error (g));
- RETVAL = newSVpv (content, 0);
- free (content);
- OUTPUT:
- RETVAL
-
-SV *
-ll (g, directory)
- guestfs_h *g;
- char *directory;
-PREINIT:
- char *listing;
- CODE:
- listing = guestfs_ll (g, directory);
- if (listing == NULL)
- croak ("ll: %s", guestfs_last_error (g));
- RETVAL = newSVpv (listing, 0);
- free (listing);
- OUTPUT:
- RETVAL
-
-void
-ls (g, directory)
- guestfs_h *g;
- char *directory;
-PREINIT:
- char **listing;
- int i, n;
- PPCODE:
- listing = guestfs_ls (g, directory);
- if (listing == NULL)
- croak ("ls: %s", guestfs_last_error (g));
- for (n = 0; listing[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (listing[i], 0)));
- free (listing[i]);
- }
- free (listing);
-
-void
-list_devices (g)
- guestfs_h *g;
-PREINIT:
- char **devices;
- int i, n;
- PPCODE:
- devices = guestfs_list_devices (g);
- if (devices == NULL)
- croak ("list_devices: %s", guestfs_last_error (g));
- for (n = 0; devices[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (devices[i], 0)));
- free (devices[i]);
- }
- free (devices);
-
-void
-list_partitions (g)
- guestfs_h *g;
-PREINIT:
- char **partitions;
- int i, n;
- PPCODE:
- partitions = guestfs_list_partitions (g);
- if (partitions == NULL)
- croak ("list_partitions: %s", guestfs_last_error (g));
- for (n = 0; partitions[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (partitions[i], 0)));
- free (partitions[i]);
- }
- free (partitions);
-
-void
-pvs (g)
- guestfs_h *g;
-PREINIT:
- char **physvols;
- int i, n;
- PPCODE:
- physvols = guestfs_pvs (g);
- if (physvols == NULL)
- croak ("pvs: %s", guestfs_last_error (g));
- for (n = 0; physvols[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (physvols[i], 0)));
- free (physvols[i]);
- }
- free (physvols);
-
-void
-vgs (g)
- guestfs_h *g;
-PREINIT:
- char **volgroups;
- int i, n;
- PPCODE:
- volgroups = guestfs_vgs (g);
- if (volgroups == NULL)
- croak ("vgs: %s", guestfs_last_error (g));
- for (n = 0; volgroups[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (volgroups[i], 0)));
- free (volgroups[i]);
- }
- free (volgroups);
-
-void
-lvs (g)
- guestfs_h *g;
-PREINIT:
- char **logvols;
- int i, n;
- PPCODE:
- logvols = guestfs_lvs (g);
- if (logvols == NULL)
- croak ("lvs: %s", guestfs_last_error (g));
- for (n = 0; logvols[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (logvols[i], 0)));
- free (logvols[i]);
- }
- free (logvols);
-
-void
-pvs_full (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_pv_list *physvols;
- int i;
- HV *hv;
- PPCODE:
- physvols = guestfs_pvs_full (g);
- if (physvols == NULL)
- croak ("pvs_full: %s", guestfs_last_error (g));
- EXTEND (SP, physvols->len);
- for (i = 0; i < physvols->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "pv_name", 7, newSVpv (physvols->val[i].pv_name, 0), 0);
- (void) hv_store (hv, "pv_uuid", 7, newSVpv (physvols->val[i].pv_uuid, 32), 0);
- (void) hv_store (hv, "pv_fmt", 6, newSVpv (physvols->val[i].pv_fmt, 0), 0);
- (void) hv_store (hv, "pv_size", 7, my_newSVull (physvols->val[i].pv_size), 0);
- (void) hv_store (hv, "dev_size", 8, my_newSVull (physvols->val[i].dev_size), 0);
- (void) hv_store (hv, "pv_free", 7, my_newSVull (physvols->val[i].pv_free), 0);
- (void) hv_store (hv, "pv_used", 7, my_newSVull (physvols->val[i].pv_used), 0);
- (void) hv_store (hv, "pv_attr", 7, newSVpv (physvols->val[i].pv_attr, 0), 0);
- (void) hv_store (hv, "pv_pe_count", 11, my_newSVll (physvols->val[i].pv_pe_count), 0);
- (void) hv_store (hv, "pv_pe_alloc_count", 17, my_newSVll (physvols->val[i].pv_pe_alloc_count), 0);
- (void) hv_store (hv, "pv_tags", 7, newSVpv (physvols->val[i].pv_tags, 0), 0);
- (void) hv_store (hv, "pe_start", 8, my_newSVull (physvols->val[i].pe_start), 0);
- (void) hv_store (hv, "pv_mda_count", 12, my_newSVll (physvols->val[i].pv_mda_count), 0);
- (void) hv_store (hv, "pv_mda_free", 11, my_newSVull (physvols->val[i].pv_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_pv_list (physvols);
-
-void
-vgs_full (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_vg_list *volgroups;
- int i;
- HV *hv;
- PPCODE:
- volgroups = guestfs_vgs_full (g);
- if (volgroups == NULL)
- croak ("vgs_full: %s", guestfs_last_error (g));
- EXTEND (SP, volgroups->len);
- for (i = 0; i < volgroups->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "vg_name", 7, newSVpv (volgroups->val[i].vg_name, 0), 0);
- (void) hv_store (hv, "vg_uuid", 7, newSVpv (volgroups->val[i].vg_uuid, 32), 0);
- (void) hv_store (hv, "vg_fmt", 6, newSVpv (volgroups->val[i].vg_fmt, 0), 0);
- (void) hv_store (hv, "vg_attr", 7, newSVpv (volgroups->val[i].vg_attr, 0), 0);
- (void) hv_store (hv, "vg_size", 7, my_newSVull (volgroups->val[i].vg_size), 0);
- (void) hv_store (hv, "vg_free", 7, my_newSVull (volgroups->val[i].vg_free), 0);
- (void) hv_store (hv, "vg_sysid", 8, newSVpv (volgroups->val[i].vg_sysid, 0), 0);
- (void) hv_store (hv, "vg_extent_size", 14, my_newSVull (volgroups->val[i].vg_extent_size), 0);
- (void) hv_store (hv, "vg_extent_count", 15, my_newSVll (volgroups->val[i].vg_extent_count), 0);
- (void) hv_store (hv, "vg_free_count", 13, my_newSVll (volgroups->val[i].vg_free_count), 0);
- (void) hv_store (hv, "max_lv", 6, my_newSVll (volgroups->val[i].max_lv), 0);
- (void) hv_store (hv, "max_pv", 6, my_newSVll (volgroups->val[i].max_pv), 0);
- (void) hv_store (hv, "pv_count", 8, my_newSVll (volgroups->val[i].pv_count), 0);
- (void) hv_store (hv, "lv_count", 8, my_newSVll (volgroups->val[i].lv_count), 0);
- (void) hv_store (hv, "snap_count", 10, my_newSVll (volgroups->val[i].snap_count), 0);
- (void) hv_store (hv, "vg_seqno", 8, my_newSVll (volgroups->val[i].vg_seqno), 0);
- (void) hv_store (hv, "vg_tags", 7, newSVpv (volgroups->val[i].vg_tags, 0), 0);
- (void) hv_store (hv, "vg_mda_count", 12, my_newSVll (volgroups->val[i].vg_mda_count), 0);
- (void) hv_store (hv, "vg_mda_free", 11, my_newSVull (volgroups->val[i].vg_mda_free), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_vg_list (volgroups);
-
-void
-lvs_full (g)
- guestfs_h *g;
-PREINIT:
- struct guestfs_lvm_lv_list *logvols;
- int i;
- HV *hv;
- PPCODE:
- logvols = guestfs_lvs_full (g);
- if (logvols == NULL)
- croak ("lvs_full: %s", guestfs_last_error (g));
- EXTEND (SP, logvols->len);
- for (i = 0; i < logvols->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "lv_name", 7, newSVpv (logvols->val[i].lv_name, 0), 0);
- (void) hv_store (hv, "lv_uuid", 7, newSVpv (logvols->val[i].lv_uuid, 32), 0);
- (void) hv_store (hv, "lv_attr", 7, newSVpv (logvols->val[i].lv_attr, 0), 0);
- (void) hv_store (hv, "lv_major", 8, my_newSVll (logvols->val[i].lv_major), 0);
- (void) hv_store (hv, "lv_minor", 8, my_newSVll (logvols->val[i].lv_minor), 0);
- (void) hv_store (hv, "lv_kernel_major", 15, my_newSVll (logvols->val[i].lv_kernel_major), 0);
- (void) hv_store (hv, "lv_kernel_minor", 15, my_newSVll (logvols->val[i].lv_kernel_minor), 0);
- (void) hv_store (hv, "lv_size", 7, my_newSVull (logvols->val[i].lv_size), 0);
- (void) hv_store (hv, "seg_count", 9, my_newSVll (logvols->val[i].seg_count), 0);
- (void) hv_store (hv, "origin", 6, newSVpv (logvols->val[i].origin, 0), 0);
- (void) hv_store (hv, "snap_percent", 12, newSVnv (logvols->val[i].snap_percent), 0);
- (void) hv_store (hv, "copy_percent", 12, newSVnv (logvols->val[i].copy_percent), 0);
- (void) hv_store (hv, "move_pv", 7, newSVpv (logvols->val[i].move_pv, 0), 0);
- (void) hv_store (hv, "lv_tags", 7, newSVpv (logvols->val[i].lv_tags, 0), 0);
- (void) hv_store (hv, "mirror_log", 10, newSVpv (logvols->val[i].mirror_log, 0), 0);
- (void) hv_store (hv, "modules", 7, newSVpv (logvols->val[i].modules, 0), 0);
- PUSHs (sv_2mortal (newRV ((SV *) hv)));
- }
- guestfs_free_lvm_lv_list (logvols);
-
-void
-read_lines (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_read_lines (g, path);
- if (lines == NULL)
- croak ("read_lines: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-aug_init (g, root, flags)
- guestfs_h *g;
- char *root;
- int flags;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_init (g, root, flags);
- if (r == -1)
- croak ("aug_init: %s", guestfs_last_error (g));
-
-void
-aug_close (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_close (g);
- if (r == -1)
- croak ("aug_close: %s", guestfs_last_error (g));
-
-SV *
-aug_defvar (g, name, expr)
- guestfs_h *g;
- char *name;
- char *expr = SvOK(ST(2)) ? SvPV_nolen(ST(2)) : NULL;
-PREINIT:
- int nrnodes;
- CODE:
- nrnodes = guestfs_aug_defvar (g, name, expr);
- if (nrnodes == -1)
- croak ("aug_defvar: %s", guestfs_last_error (g));
- RETVAL = newSViv (nrnodes);
- OUTPUT:
- RETVAL
-
-void
-aug_defnode (g, name, expr, val)
- guestfs_h *g;
- char *name;
- char *expr;
- char *val;
-PREINIT:
- struct guestfs_int_bool *r;
- PPCODE:
- r = guestfs_aug_defnode (g, name, expr, val);
- if (r == NULL)
- croak ("aug_defnode: %s", guestfs_last_error (g));
- EXTEND (SP, 2);
- PUSHs (sv_2mortal (newSViv (r->i)));
- PUSHs (sv_2mortal (newSViv (r->b)));
- guestfs_free_int_bool (r);
-
-SV *
-aug_get (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char *val;
- CODE:
- val = guestfs_aug_get (g, path);
- if (val == NULL)
- croak ("aug_get: %s", guestfs_last_error (g));
- RETVAL = newSVpv (val, 0);
- free (val);
- OUTPUT:
- RETVAL
-
-void
-aug_set (g, path, val)
- guestfs_h *g;
- char *path;
- char *val;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_set (g, path, val);
- if (r == -1)
- croak ("aug_set: %s", guestfs_last_error (g));
-
-void
-aug_insert (g, path, label, before)
- guestfs_h *g;
- char *path;
- char *label;
- int before;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_insert (g, path, label, before);
- if (r == -1)
- croak ("aug_insert: %s", guestfs_last_error (g));
-
-SV *
-aug_rm (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int nrnodes;
- CODE:
- nrnodes = guestfs_aug_rm (g, path);
- if (nrnodes == -1)
- croak ("aug_rm: %s", guestfs_last_error (g));
- RETVAL = newSViv (nrnodes);
- OUTPUT:
- RETVAL
-
-void
-aug_mv (g, src, dest)
- guestfs_h *g;
- char *src;
- char *dest;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_mv (g, src, dest);
- if (r == -1)
- croak ("aug_mv: %s", guestfs_last_error (g));
-
-void
-aug_match (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **matches;
- int i, n;
- PPCODE:
- matches = guestfs_aug_match (g, path);
- if (matches == NULL)
- croak ("aug_match: %s", guestfs_last_error (g));
- for (n = 0; matches[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (matches[i], 0)));
- free (matches[i]);
- }
- free (matches);
-
-void
-aug_save (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_save (g);
- if (r == -1)
- croak ("aug_save: %s", guestfs_last_error (g));
-
-void
-aug_load (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_aug_load (g);
- if (r == -1)
- croak ("aug_load: %s", guestfs_last_error (g));
-
-void
-aug_ls (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **matches;
- int i, n;
- PPCODE:
- matches = guestfs_aug_ls (g, path);
- if (matches == NULL)
- croak ("aug_ls: %s", guestfs_last_error (g));
- for (n = 0; matches[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (matches[i], 0)));
- free (matches[i]);
- }
- free (matches);
-
-void
-rm (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_rm (g, path);
- if (r == -1)
- croak ("rm: %s", guestfs_last_error (g));
-
-void
-rmdir (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_rmdir (g, path);
- if (r == -1)
- croak ("rmdir: %s", guestfs_last_error (g));
-
-void
-rm_rf (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_rm_rf (g, path);
- if (r == -1)
- croak ("rm_rf: %s", guestfs_last_error (g));
-
-void
-mkdir (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkdir (g, path);
- if (r == -1)
- croak ("mkdir: %s", guestfs_last_error (g));
-
-void
-mkdir_p (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkdir_p (g, path);
- if (r == -1)
- croak ("mkdir_p: %s", guestfs_last_error (g));
-
-void
-chmod (g, mode, path)
- guestfs_h *g;
- int mode;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_chmod (g, mode, path);
- if (r == -1)
- croak ("chmod: %s", guestfs_last_error (g));
-
-void
-chown (g, owner, group, path)
- guestfs_h *g;
- int owner;
- int group;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_chown (g, owner, group, path);
- if (r == -1)
- croak ("chown: %s", guestfs_last_error (g));
-
-SV *
-exists (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int existsflag;
- CODE:
- existsflag = guestfs_exists (g, path);
- if (existsflag == -1)
- croak ("exists: %s", guestfs_last_error (g));
- RETVAL = newSViv (existsflag);
- OUTPUT:
- RETVAL
-
-SV *
-is_file (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int fileflag;
- CODE:
- fileflag = guestfs_is_file (g, path);
- if (fileflag == -1)
- croak ("is_file: %s", guestfs_last_error (g));
- RETVAL = newSViv (fileflag);
- OUTPUT:
- RETVAL
-
-SV *
-is_dir (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int dirflag;
- CODE:
- dirflag = guestfs_is_dir (g, path);
- if (dirflag == -1)
- croak ("is_dir: %s", guestfs_last_error (g));
- RETVAL = newSViv (dirflag);
- OUTPUT:
- RETVAL
-
-void
-pvcreate (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_pvcreate (g, device);
- if (r == -1)
- croak ("pvcreate: %s", guestfs_last_error (g));
-
-void
-vgcreate (g, volgroup, physvols)
- guestfs_h *g;
- char *volgroup;
- char **physvols;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_vgcreate (g, volgroup, physvols);
- free (physvols);
- if (r == -1)
- croak ("vgcreate: %s", guestfs_last_error (g));
-
-void
-lvcreate (g, logvol, volgroup, mbytes)
- guestfs_h *g;
- char *logvol;
- char *volgroup;
- int mbytes;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_lvcreate (g, logvol, volgroup, mbytes);
- if (r == -1)
- croak ("lvcreate: %s", guestfs_last_error (g));
-
-void
-mkfs (g, fstype, device)
- guestfs_h *g;
- char *fstype;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkfs (g, fstype, device);
- if (r == -1)
- croak ("mkfs: %s", guestfs_last_error (g));
-
-void
-sfdisk (g, device, cyls, heads, sectors, lines)
- guestfs_h *g;
- char *device;
- int cyls;
- int heads;
- int sectors;
- char **lines;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_sfdisk (g, device, cyls, heads, sectors, lines);
- free (lines);
- if (r == -1)
- croak ("sfdisk: %s", guestfs_last_error (g));
-
-void
-write_file (g, path, content, size)
- guestfs_h *g;
- char *path;
- char *content;
- int size;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_write_file (g, path, content, size);
- if (r == -1)
- croak ("write_file: %s", guestfs_last_error (g));
-
-void
-umount (g, pathordevice)
- guestfs_h *g;
- char *pathordevice;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_umount (g, pathordevice);
- if (r == -1)
- croak ("umount: %s", guestfs_last_error (g));
-
-void
-mounts (g)
- guestfs_h *g;
-PREINIT:
- char **devices;
- int i, n;
- PPCODE:
- devices = guestfs_mounts (g);
- if (devices == NULL)
- croak ("mounts: %s", guestfs_last_error (g));
- for (n = 0; devices[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (devices[i], 0)));
- free (devices[i]);
- }
- free (devices);
-
-void
-umount_all (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_umount_all (g);
- if (r == -1)
- croak ("umount_all: %s", guestfs_last_error (g));
-
-void
-lvm_remove_all (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_lvm_remove_all (g);
- if (r == -1)
- croak ("lvm_remove_all: %s", guestfs_last_error (g));
-
-SV *
-file (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char *description;
- CODE:
- description = guestfs_file (g, path);
- if (description == NULL)
- croak ("file: %s", guestfs_last_error (g));
- RETVAL = newSVpv (description, 0);
- free (description);
- OUTPUT:
- RETVAL
-
-SV *
-command (g, arguments)
- guestfs_h *g;
- char **arguments;
-PREINIT:
- char *output;
- CODE:
- output = guestfs_command (g, arguments);
- free (arguments);
- if (output == NULL)
- croak ("command: %s", guestfs_last_error (g));
- RETVAL = newSVpv (output, 0);
- free (output);
- OUTPUT:
- RETVAL
-
-void
-command_lines (g, arguments)
- guestfs_h *g;
- char **arguments;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_command_lines (g, arguments);
- free (arguments);
- if (lines == NULL)
- croak ("command_lines: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-stat (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- struct guestfs_stat *statbuf;
- PPCODE:
- statbuf = guestfs_stat (g, path);
- if (statbuf == NULL)
- croak ("stat: %s", guestfs_last_error (g));
- EXTEND (SP, 13);
- PUSHs (sv_2mortal (my_newSVll (statbuf->dev)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->ino)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->mode)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->nlink)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->uid)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->gid)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->rdev)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->size)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->blksize)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->blocks)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->atime)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->mtime)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->ctime)));
- free (statbuf);
-
-void
-lstat (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- struct guestfs_stat *statbuf;
- PPCODE:
- statbuf = guestfs_lstat (g, path);
- if (statbuf == NULL)
- croak ("lstat: %s", guestfs_last_error (g));
- EXTEND (SP, 13);
- PUSHs (sv_2mortal (my_newSVll (statbuf->dev)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->ino)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->mode)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->nlink)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->uid)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->gid)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->rdev)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->size)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->blksize)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->blocks)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->atime)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->mtime)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->ctime)));
- free (statbuf);
-
-void
-statvfs (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- struct guestfs_statvfs *statbuf;
- PPCODE:
- statbuf = guestfs_statvfs (g, path);
- if (statbuf == NULL)
- croak ("statvfs: %s", guestfs_last_error (g));
- EXTEND (SP, 11);
- PUSHs (sv_2mortal (my_newSVll (statbuf->bsize)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->frsize)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->blocks)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->bfree)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->bavail)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->files)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->ffree)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->favail)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->fsid)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->flag)));
- PUSHs (sv_2mortal (my_newSVll (statbuf->namemax)));
- free (statbuf);
-
-void
-tune2fs_l (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char **superblock;
- int i, n;
- PPCODE:
- superblock = guestfs_tune2fs_l (g, device);
- if (superblock == NULL)
- croak ("tune2fs_l: %s", guestfs_last_error (g));
- for (n = 0; superblock[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (superblock[i], 0)));
- free (superblock[i]);
- }
- free (superblock);
-
-void
-blockdev_setro (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_blockdev_setro (g, device);
- if (r == -1)
- croak ("blockdev_setro: %s", guestfs_last_error (g));
-
-void
-blockdev_setrw (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_blockdev_setrw (g, device);
- if (r == -1)
- croak ("blockdev_setrw: %s", guestfs_last_error (g));
-
-SV *
-blockdev_getro (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int ro;
- CODE:
- ro = guestfs_blockdev_getro (g, device);
- if (ro == -1)
- croak ("blockdev_getro: %s", guestfs_last_error (g));
- RETVAL = newSViv (ro);
- OUTPUT:
- RETVAL
-
-SV *
-blockdev_getss (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int sectorsize;
- CODE:
- sectorsize = guestfs_blockdev_getss (g, device);
- if (sectorsize == -1)
- croak ("blockdev_getss: %s", guestfs_last_error (g));
- RETVAL = newSViv (sectorsize);
- OUTPUT:
- RETVAL
-
-SV *
-blockdev_getbsz (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int blocksize;
- CODE:
- blocksize = guestfs_blockdev_getbsz (g, device);
- if (blocksize == -1)
- croak ("blockdev_getbsz: %s", guestfs_last_error (g));
- RETVAL = newSViv (blocksize);
- OUTPUT:
- RETVAL
-
-void
-blockdev_setbsz (g, device, blocksize)
- guestfs_h *g;
- char *device;
- int blocksize;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_blockdev_setbsz (g, device, blocksize);
- if (r == -1)
- croak ("blockdev_setbsz: %s", guestfs_last_error (g));
-
-SV *
-blockdev_getsz (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int64_t sizeinsectors;
- CODE:
- sizeinsectors = guestfs_blockdev_getsz (g, device);
- if (sizeinsectors == -1)
- croak ("blockdev_getsz: %s", guestfs_last_error (g));
- RETVAL = my_newSVll (sizeinsectors);
- OUTPUT:
- RETVAL
-
-SV *
-blockdev_getsize64 (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int64_t sizeinbytes;
- CODE:
- sizeinbytes = guestfs_blockdev_getsize64 (g, device);
- if (sizeinbytes == -1)
- croak ("blockdev_getsize64: %s", guestfs_last_error (g));
- RETVAL = my_newSVll (sizeinbytes);
- OUTPUT:
- RETVAL
-
-void
-blockdev_flushbufs (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_blockdev_flushbufs (g, device);
- if (r == -1)
- croak ("blockdev_flushbufs: %s", guestfs_last_error (g));
-
-void
-blockdev_rereadpt (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_blockdev_rereadpt (g, device);
- if (r == -1)
- croak ("blockdev_rereadpt: %s", guestfs_last_error (g));
-
-void
-upload (g, filename, remotefilename)
- guestfs_h *g;
- char *filename;
- char *remotefilename;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_upload (g, filename, remotefilename);
- if (r == -1)
- croak ("upload: %s", guestfs_last_error (g));
-
-void
-download (g, remotefilename, filename)
- guestfs_h *g;
- char *remotefilename;
- char *filename;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_download (g, remotefilename, filename);
- if (r == -1)
- croak ("download: %s", guestfs_last_error (g));
-
-SV *
-checksum (g, csumtype, path)
- guestfs_h *g;
- char *csumtype;
- char *path;
-PREINIT:
- char *checksum;
- CODE:
- checksum = guestfs_checksum (g, csumtype, path);
- if (checksum == NULL)
- croak ("checksum: %s", guestfs_last_error (g));
- RETVAL = newSVpv (checksum, 0);
- free (checksum);
- OUTPUT:
- RETVAL
-
-void
-tar_in (g, tarfile, directory)
- guestfs_h *g;
- char *tarfile;
- char *directory;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_tar_in (g, tarfile, directory);
- if (r == -1)
- croak ("tar_in: %s", guestfs_last_error (g));
-
-void
-tar_out (g, directory, tarfile)
- guestfs_h *g;
- char *directory;
- char *tarfile;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_tar_out (g, directory, tarfile);
- if (r == -1)
- croak ("tar_out: %s", guestfs_last_error (g));
-
-void
-tgz_in (g, tarball, directory)
- guestfs_h *g;
- char *tarball;
- char *directory;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_tgz_in (g, tarball, directory);
- if (r == -1)
- croak ("tgz_in: %s", guestfs_last_error (g));
-
-void
-tgz_out (g, directory, tarball)
- guestfs_h *g;
- char *directory;
- char *tarball;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_tgz_out (g, directory, tarball);
- if (r == -1)
- croak ("tgz_out: %s", guestfs_last_error (g));
-
-void
-mount_ro (g, device, mountpoint)
- guestfs_h *g;
- char *device;
- char *mountpoint;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mount_ro (g, device, mountpoint);
- if (r == -1)
- croak ("mount_ro: %s", guestfs_last_error (g));
-
-void
-mount_options (g, options, device, mountpoint)
- guestfs_h *g;
- char *options;
- char *device;
- char *mountpoint;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mount_options (g, options, device, mountpoint);
- if (r == -1)
- croak ("mount_options: %s", guestfs_last_error (g));
-
-void
-mount_vfs (g, options, vfstype, device, mountpoint)
- guestfs_h *g;
- char *options;
- char *vfstype;
- char *device;
- char *mountpoint;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mount_vfs (g, options, vfstype, device, mountpoint);
- if (r == -1)
- croak ("mount_vfs: %s", guestfs_last_error (g));
-
-SV *
-debug (g, subcmd, extraargs)
- guestfs_h *g;
- char *subcmd;
- char **extraargs;
-PREINIT:
- char *result;
- CODE:
- result = guestfs_debug (g, subcmd, extraargs);
- free (extraargs);
- if (result == NULL)
- croak ("debug: %s", guestfs_last_error (g));
- RETVAL = newSVpv (result, 0);
- free (result);
- OUTPUT:
- RETVAL
-
-void
-lvremove (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_lvremove (g, device);
- if (r == -1)
- croak ("lvremove: %s", guestfs_last_error (g));
-
-void
-vgremove (g, vgname)
- guestfs_h *g;
- char *vgname;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_vgremove (g, vgname);
- if (r == -1)
- croak ("vgremove: %s", guestfs_last_error (g));
-
-void
-pvremove (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_pvremove (g, device);
- if (r == -1)
- croak ("pvremove: %s", guestfs_last_error (g));
-
-void
-set_e2label (g, device, label)
- guestfs_h *g;
- char *device;
- char *label;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_e2label (g, device, label);
- if (r == -1)
- croak ("set_e2label: %s", guestfs_last_error (g));
-
-SV *
-get_e2label (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char *label;
- CODE:
- label = guestfs_get_e2label (g, device);
- if (label == NULL)
- croak ("get_e2label: %s", guestfs_last_error (g));
- RETVAL = newSVpv (label, 0);
- free (label);
- OUTPUT:
- RETVAL
-
-void
-set_e2uuid (g, device, uuid)
- guestfs_h *g;
- char *device;
- char *uuid;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_set_e2uuid (g, device, uuid);
- if (r == -1)
- croak ("set_e2uuid: %s", guestfs_last_error (g));
-
-SV *
-get_e2uuid (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char *uuid;
- CODE:
- uuid = guestfs_get_e2uuid (g, device);
- if (uuid == NULL)
- croak ("get_e2uuid: %s", guestfs_last_error (g));
- RETVAL = newSVpv (uuid, 0);
- free (uuid);
- OUTPUT:
- RETVAL
-
-SV *
-fsck (g, fstype, device)
- guestfs_h *g;
- char *fstype;
- char *device;
-PREINIT:
- int status;
- CODE:
- status = guestfs_fsck (g, fstype, device);
- if (status == -1)
- croak ("fsck: %s", guestfs_last_error (g));
- RETVAL = newSViv (status);
- OUTPUT:
- RETVAL
-
-void
-zero (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_zero (g, device);
- if (r == -1)
- croak ("zero: %s", guestfs_last_error (g));
-
-void
-grub_install (g, root, device)
- guestfs_h *g;
- char *root;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_grub_install (g, root, device);
- if (r == -1)
- croak ("grub_install: %s", guestfs_last_error (g));
-
-void
-cp (g, src, dest)
- guestfs_h *g;
- char *src;
- char *dest;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_cp (g, src, dest);
- if (r == -1)
- croak ("cp: %s", guestfs_last_error (g));
-
-void
-cp_a (g, src, dest)
- guestfs_h *g;
- char *src;
- char *dest;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_cp_a (g, src, dest);
- if (r == -1)
- croak ("cp_a: %s", guestfs_last_error (g));
-
-void
-mv (g, src, dest)
- guestfs_h *g;
- char *src;
- char *dest;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mv (g, src, dest);
- if (r == -1)
- croak ("mv: %s", guestfs_last_error (g));
-
-void
-drop_caches (g, whattodrop)
- guestfs_h *g;
- int whattodrop;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_drop_caches (g, whattodrop);
- if (r == -1)
- croak ("drop_caches: %s", guestfs_last_error (g));
-
-SV *
-dmesg (g)
- guestfs_h *g;
-PREINIT:
- char *kmsgs;
- CODE:
- kmsgs = guestfs_dmesg (g);
- if (kmsgs == NULL)
- croak ("dmesg: %s", guestfs_last_error (g));
- RETVAL = newSVpv (kmsgs, 0);
- free (kmsgs);
- OUTPUT:
- RETVAL
-
-void
-ping_daemon (g)
- guestfs_h *g;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_ping_daemon (g);
- if (r == -1)
- croak ("ping_daemon: %s", guestfs_last_error (g));
-
-SV *
-equal (g, file1, file2)
- guestfs_h *g;
- char *file1;
- char *file2;
-PREINIT:
- int equality;
- CODE:
- equality = guestfs_equal (g, file1, file2);
- if (equality == -1)
- croak ("equal: %s", guestfs_last_error (g));
- RETVAL = newSViv (equality);
- OUTPUT:
- RETVAL
-
-void
-strings (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **stringsout;
- int i, n;
- PPCODE:
- stringsout = guestfs_strings (g, path);
- if (stringsout == NULL)
- croak ("strings: %s", guestfs_last_error (g));
- for (n = 0; stringsout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (stringsout[i], 0)));
- free (stringsout[i]);
- }
- free (stringsout);
-
-void
-strings_e (g, encoding, path)
- guestfs_h *g;
- char *encoding;
- char *path;
-PREINIT:
- char **stringsout;
- int i, n;
- PPCODE:
- stringsout = guestfs_strings_e (g, encoding, path);
- if (stringsout == NULL)
- croak ("strings_e: %s", guestfs_last_error (g));
- for (n = 0; stringsout[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (stringsout[i], 0)));
- free (stringsout[i]);
- }
- free (stringsout);
-
-SV *
-hexdump (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char *dump;
- CODE:
- dump = guestfs_hexdump (g, path);
- if (dump == NULL)
- croak ("hexdump: %s", guestfs_last_error (g));
- RETVAL = newSVpv (dump, 0);
- free (dump);
- OUTPUT:
- RETVAL
-
-void
-zerofree (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_zerofree (g, device);
- if (r == -1)
- croak ("zerofree: %s", guestfs_last_error (g));
-
-void
-pvresize (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_pvresize (g, device);
- if (r == -1)
- croak ("pvresize: %s", guestfs_last_error (g));
-
-void
-sfdisk_N (g, device, partnum, cyls, heads, sectors, line)
- guestfs_h *g;
- char *device;
- int partnum;
- int cyls;
- int heads;
- int sectors;
- char *line;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_sfdisk_N (g, device, partnum, cyls, heads, sectors, line);
- if (r == -1)
- croak ("sfdisk_N: %s", guestfs_last_error (g));
-
-SV *
-sfdisk_l (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char *partitions;
- CODE:
- partitions = guestfs_sfdisk_l (g, device);
- if (partitions == NULL)
- croak ("sfdisk_l: %s", guestfs_last_error (g));
- RETVAL = newSVpv (partitions, 0);
- free (partitions);
- OUTPUT:
- RETVAL
-
-SV *
-sfdisk_kernel_geometry (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char *partitions;
- CODE:
- partitions = guestfs_sfdisk_kernel_geometry (g, device);
- if (partitions == NULL)
- croak ("sfdisk_kernel_geometry: %s", guestfs_last_error (g));
- RETVAL = newSVpv (partitions, 0);
- free (partitions);
- OUTPUT:
- RETVAL
-
-SV *
-sfdisk_disk_geometry (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- char *partitions;
- CODE:
- partitions = guestfs_sfdisk_disk_geometry (g, device);
- if (partitions == NULL)
- croak ("sfdisk_disk_geometry: %s", guestfs_last_error (g));
- RETVAL = newSVpv (partitions, 0);
- free (partitions);
- OUTPUT:
- RETVAL
-
-void
-vg_activate_all (g, activate)
- guestfs_h *g;
- int activate;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_vg_activate_all (g, activate);
- if (r == -1)
- croak ("vg_activate_all: %s", guestfs_last_error (g));
-
-void
-vg_activate (g, activate, volgroups)
- guestfs_h *g;
- int activate;
- char **volgroups;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_vg_activate (g, activate, volgroups);
- free (volgroups);
- if (r == -1)
- croak ("vg_activate: %s", guestfs_last_error (g));
-
-void
-lvresize (g, device, mbytes)
- guestfs_h *g;
- char *device;
- int mbytes;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_lvresize (g, device, mbytes);
- if (r == -1)
- croak ("lvresize: %s", guestfs_last_error (g));
-
-void
-resize2fs (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_resize2fs (g, device);
- if (r == -1)
- croak ("resize2fs: %s", guestfs_last_error (g));
-
-void
-find (g, directory)
- guestfs_h *g;
- char *directory;
-PREINIT:
- char **names;
- int i, n;
- PPCODE:
- names = guestfs_find (g, directory);
- if (names == NULL)
- croak ("find: %s", guestfs_last_error (g));
- for (n = 0; names[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (names[i], 0)));
- free (names[i]);
- }
- free (names);
-
-void
-e2fsck_f (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_e2fsck_f (g, device);
- if (r == -1)
- croak ("e2fsck_f: %s", guestfs_last_error (g));
-
-void
-sleep (g, secs)
- guestfs_h *g;
- int secs;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_sleep (g, secs);
- if (r == -1)
- croak ("sleep: %s", guestfs_last_error (g));
-
-SV *
-ntfs_3g_probe (g, rw, device)
- guestfs_h *g;
- int rw;
- char *device;
-PREINIT:
- int status;
- CODE:
- status = guestfs_ntfs_3g_probe (g, rw, device);
- if (status == -1)
- croak ("ntfs_3g_probe: %s", guestfs_last_error (g));
- RETVAL = newSViv (status);
- OUTPUT:
- RETVAL
-
-SV *
-sh (g, command)
- guestfs_h *g;
- char *command;
-PREINIT:
- char *output;
- CODE:
- output = guestfs_sh (g, command);
- if (output == NULL)
- croak ("sh: %s", guestfs_last_error (g));
- RETVAL = newSVpv (output, 0);
- free (output);
- OUTPUT:
- RETVAL
-
-void
-sh_lines (g, command)
- guestfs_h *g;
- char *command;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_sh_lines (g, command);
- if (lines == NULL)
- croak ("sh_lines: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-glob_expand (g, pattern)
- guestfs_h *g;
- char *pattern;
-PREINIT:
- char **paths;
- int i, n;
- PPCODE:
- paths = guestfs_glob_expand (g, pattern);
- if (paths == NULL)
- croak ("glob_expand: %s", guestfs_last_error (g));
- for (n = 0; paths[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (paths[i], 0)));
- free (paths[i]);
- }
- free (paths);
-
-void
-scrub_device (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_scrub_device (g, device);
- if (r == -1)
- croak ("scrub_device: %s", guestfs_last_error (g));
-
-void
-scrub_file (g, file)
- guestfs_h *g;
- char *file;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_scrub_file (g, file);
- if (r == -1)
- croak ("scrub_file: %s", guestfs_last_error (g));
-
-void
-scrub_freespace (g, dir)
- guestfs_h *g;
- char *dir;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_scrub_freespace (g, dir);
- if (r == -1)
- croak ("scrub_freespace: %s", guestfs_last_error (g));
-
-SV *
-mkdtemp (g, template)
- guestfs_h *g;
- char *template;
-PREINIT:
- char *dir;
- CODE:
- dir = guestfs_mkdtemp (g, template);
- if (dir == NULL)
- croak ("mkdtemp: %s", guestfs_last_error (g));
- RETVAL = newSVpv (dir, 0);
- free (dir);
- OUTPUT:
- RETVAL
-
-SV *
-wc_l (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int lines;
- CODE:
- lines = guestfs_wc_l (g, path);
- if (lines == -1)
- croak ("wc_l: %s", guestfs_last_error (g));
- RETVAL = newSViv (lines);
- OUTPUT:
- RETVAL
-
-SV *
-wc_w (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int words;
- CODE:
- words = guestfs_wc_w (g, path);
- if (words == -1)
- croak ("wc_w: %s", guestfs_last_error (g));
- RETVAL = newSViv (words);
- OUTPUT:
- RETVAL
-
-SV *
-wc_c (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int chars;
- CODE:
- chars = guestfs_wc_c (g, path);
- if (chars == -1)
- croak ("wc_c: %s", guestfs_last_error (g));
- RETVAL = newSViv (chars);
- OUTPUT:
- RETVAL
-
-void
-head (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_head (g, path);
- if (lines == NULL)
- croak ("head: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-head_n (g, nrlines, path)
- guestfs_h *g;
- int nrlines;
- char *path;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_head_n (g, nrlines, path);
- if (lines == NULL)
- croak ("head_n: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-tail (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_tail (g, path);
- if (lines == NULL)
- croak ("tail: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-void
-tail_n (g, nrlines, path)
- guestfs_h *g;
- int nrlines;
- char *path;
-PREINIT:
- char **lines;
- int i, n;
- PPCODE:
- lines = guestfs_tail_n (g, nrlines, path);
- if (lines == NULL)
- croak ("tail_n: %s", guestfs_last_error (g));
- for (n = 0; lines[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (lines[i], 0)));
- free (lines[i]);
- }
- free (lines);
-
-SV *
-df (g)
- guestfs_h *g;
-PREINIT:
- char *output;
- CODE:
- output = guestfs_df (g);
- if (output == NULL)
- croak ("df: %s", guestfs_last_error (g));
- RETVAL = newSVpv (output, 0);
- free (output);
- OUTPUT:
- RETVAL
-
-SV *
-df_h (g)
- guestfs_h *g;
-PREINIT:
- char *output;
- CODE:
- output = guestfs_df_h (g);
- if (output == NULL)
- croak ("df_h: %s", guestfs_last_error (g));
- RETVAL = newSVpv (output, 0);
- free (output);
- OUTPUT:
- RETVAL
-
-SV *
-du (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- int64_t sizekb;
- CODE:
- sizekb = guestfs_du (g, path);
- if (sizekb == -1)
- croak ("du: %s", guestfs_last_error (g));
- RETVAL = my_newSVll (sizekb);
- OUTPUT:
- RETVAL
-
-void
-initrd_list (g, path)
- guestfs_h *g;
- char *path;
-PREINIT:
- char **filenames;
- int i, n;
- PPCODE:
- filenames = guestfs_initrd_list (g, path);
- if (filenames == NULL)
- croak ("initrd_list: %s", guestfs_last_error (g));
- for (n = 0; filenames[n] != NULL; ++n) /**/;
- EXTEND (SP, n);
- for (i = 0; i < n; ++i) {
- PUSHs (sv_2mortal (newSVpv (filenames[i], 0)));
- free (filenames[i]);
- }
- free (filenames);
-
-void
-mount_loop (g, file, mountpoint)
- guestfs_h *g;
- char *file;
- char *mountpoint;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mount_loop (g, file, mountpoint);
- if (r == -1)
- croak ("mount_loop: %s", guestfs_last_error (g));
-
-void
-mkswap (g, device)
- guestfs_h *g;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkswap (g, device);
- if (r == -1)
- croak ("mkswap: %s", guestfs_last_error (g));
-
-void
-mkswap_L (g, label, device)
- guestfs_h *g;
- char *label;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkswap_L (g, label, device);
- if (r == -1)
- croak ("mkswap_L: %s", guestfs_last_error (g));
-
-void
-mkswap_U (g, uuid, device)
- guestfs_h *g;
- char *uuid;
- char *device;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkswap_U (g, uuid, device);
- if (r == -1)
- croak ("mkswap_U: %s", guestfs_last_error (g));
-
-void
-mknod (g, mode, devmajor, devminor, path)
- guestfs_h *g;
- int mode;
- int devmajor;
- int devminor;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mknod (g, mode, devmajor, devminor, path);
- if (r == -1)
- croak ("mknod: %s", guestfs_last_error (g));
-
-void
-mkfifo (g, mode, path)
- guestfs_h *g;
- int mode;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mkfifo (g, mode, path);
- if (r == -1)
- croak ("mkfifo: %s", guestfs_last_error (g));
-
-void
-mknod_b (g, mode, devmajor, devminor, path)
- guestfs_h *g;
- int mode;
- int devmajor;
- int devminor;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mknod_b (g, mode, devmajor, devminor, path);
- if (r == -1)
- croak ("mknod_b: %s", guestfs_last_error (g));
-
-void
-mknod_c (g, mode, devmajor, devminor, path)
- guestfs_h *g;
- int mode;
- int devmajor;
- int devminor;
- char *path;
-PREINIT:
- int r;
- PPCODE:
- r = guestfs_mknod_c (g, mode, devmajor, devminor, path);
- if (r == -1)
- croak ("mknod_c: %s", guestfs_last_error (g));
-
-SV *
-umask (g, mask)
- guestfs_h *g;
- int mask;
-PREINIT:
- int oldmask;
- CODE:
- oldmask = guestfs_umask (g, mask);
- if (oldmask == -1)
- croak ("umask: %s", guestfs_last_error (g));
- RETVAL = newSViv (oldmask);
- OUTPUT:
- RETVAL
-
-void
-readdir (g, dir)
- guestfs_h *g;
- char *dir;
-PREINIT:
- struct guestfs_dirent_list *entries;
- int i;
- HV *hv;
- PPCODE:
- entries = guestfs_readdir (g, dir);
- if (entries == NULL)
- croak ("readdir: %s", guestfs_last_error (g));
- EXTEND (SP, entries->len);
- for (i = 0; i < entries->len; ++i) {
- hv = newHV ();
- (void) hv_store (hv, "ino", 3, my_newSVull (entries->val[i].ino), 0);
- (void) hv_store (hv, "ftyp", 4, newSVpv (&entries->val[i].ftyp, 1), 0);
- (void) hv_store (hv, "name", 4, newSVpv (entries->val[i].name, 0), 0);
- PUSHs (newRV (sv_2mortal ((SV *) hv)));
- }
- guestfs_free_dirent_list (entries);
-
diff --git a/perl/bindtests.pl b/perl/bindtests.pl
deleted file mode 100644
index 76d76f9b..00000000
--- a/perl/bindtests.pl
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/perl -w
-# libguestfs generated file
-# WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
-# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
-#
-# Copyright (C) 2009 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.
-
-use strict;
-
-use Sys::Guestfs;
-
-my $g = Sys::Guestfs->new ();
-$g->test0 ("abc", "def", [], 0, 0, "123", "456");
-$g->test0 ("abc", undef, [], 0, 0, "123", "456");
-$g->test0 ("", "def", [], 0, 0, "123", "456");
-$g->test0 ("", "", [], 0, 0, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, 0, "123", "456");
-$g->test0 ("abc", "def", ["1","2"], 0, 0, "123", "456");
-$g->test0 ("abc", "def", ["1"], 1, 0, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, -1, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, -2, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, 1, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, 2, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, 4095, "123", "456");
-$g->test0 ("abc", "def", ["1"], 0, 0, "", "");
-print "EOF\n"
diff --git a/perl/lib/Sys/Guestfs.pm b/perl/lib/Sys/Guestfs.pm
deleted file mode 100644
index e624d552..00000000
--- a/perl/lib/Sys/Guestfs.pm
+++ /dev/null
@@ -1,1658 +0,0 @@
-# libguestfs generated file
-# WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
-# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
-#
-# Copyright (C) 2009 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
-
-=pod
-
-=head1 NAME
-
-Sys::Guestfs - Perl bindings for libguestfs
-
-=head1 SYNOPSIS
-
- use Sys::Guestfs;
-
- my $h = Sys::Guestfs->new ();
- $h->add_drive ('guest.img');
- $h->launch ();
- $h->wait_ready ();
- $h->mount ('/dev/sda1', '/');
- $h->touch ('/hello');
- $h->sync ();
-
-=head1 DESCRIPTION
-
-The C<Sys::Guestfs> module provides a Perl XS binding to the
-libguestfs API for examining and modifying virtual machine
-disk images.
-
-Amongst the things this is good for: making batch configuration
-changes to guests, getting disk used/free statistics (see also:
-virt-df), migrating between virtualization systems (see also:
-virt-p2v), performing partial backups, performing partial guest
-clones, cloning guests and changing registry/UUID/hostname info, and
-much else besides.
-
-Libguestfs uses Linux kernel and qemu code, and can access any type of
-guest filesystem that Linux and qemu can, including but not limited
-to: ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition
-schemes, qcow, qcow2, vmdk.
-
-Libguestfs provides ways to enumerate guest storage (eg. partitions,
-LVs, what filesystem is in each LV, etc.). It can also run commands
-in the context of the guest. Also you can access filesystems over FTP.
-
-=head1 ERRORS
-
-All errors turn into calls to C<croak> (see L<Carp(3)>).
-
-=head1 METHODS
-
-=over 4
-
-=cut
-
-package Sys::Guestfs;
-
-use strict;
-use warnings;
-
-require XSLoader;
-XSLoader::load ('Sys::Guestfs');
-
-=item $h = Sys::Guestfs->new ();
-
-Create a new guestfs handle.
-
-=cut
-
-sub new {
- my $proto = shift;
- my $class = ref ($proto) || $proto;
-
- my $self = Sys::Guestfs::_create ();
- bless $self, $class;
- return $self;
-}
-
-=item $h->add_cdrom ($filename);
-
-This function adds a virtual CD-ROM disk image to the guest.
-
-This is equivalent to the qemu parameter C<-cdrom filename>.
-
-Note that this call checks for the existence of C<filename>. This
-stops you from specifying other types of drive which are supported
-by qemu such as C<nbd:> and C<http:> URLs. To specify those, use
-the general C<$h-E<gt>config> call instead.
-
-=item $h->add_drive ($filename);
-
-This function adds a virtual machine disk image C<filename> to the
-guest. The first time you call this function, the disk appears as IDE
-disk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and
-so on.
-
-You don't necessarily need to be root when using libguestfs. However
-you obviously do need sufficient permissions to access the filename
-for whatever operations you want to perform (ie. read access if you
-just want to read the image or write access if you want to modify the
-image).
-
-This is equivalent to the qemu parameter
-C<-drive file=filename,cache=off,if=virtio>.
-
-Note that this call checks for the existence of C<filename>. This
-stops you from specifying other types of drive which are supported
-by qemu such as C<nbd:> and C<http:> URLs. To specify those, use
-the general C<$h-E<gt>config> call instead.
-
-=item $h->add_drive_ro ($filename);
-
-This adds a drive in snapshot mode, making it effectively
-read-only.
-
-Note that writes to the device are allowed, and will be seen for
-the duration of the guestfs handle, but they are written
-to a temporary file which is discarded as soon as the guestfs
-handle is closed. We don't currently have any method to enable
-changes to be committed, although qemu can support this.
-
-This is equivalent to the qemu parameter
-C<-drive file=filename,snapshot=on,if=virtio>.
-
-Note that this call checks for the existence of C<filename>. This
-stops you from specifying other types of drive which are supported
-by qemu such as C<nbd:> and C<http:> URLs. To specify those, use
-the general C<$h-E<gt>config> call instead.
-
-=item $h->aug_close ();
-
-Close the current Augeas handle and free up any resources
-used by it. After calling this, you have to call
-C<$h-E<gt>aug_init> again before you can use any other
-Augeas functions.
-
-=item ($nrnodes, $created) = $h->aug_defnode ($name, $expr, $val);
-
-Defines a variable C<name> whose value is the result of
-evaluating C<expr>.
-
-If C<expr> evaluates to an empty nodeset, a node is created,
-equivalent to calling C<$h-E<gt>aug_set> C<expr>, C<value>.
-C<name> will be the nodeset containing that single node.
-
-On success this returns a pair containing the
-number of nodes in the nodeset, and a boolean flag
-if a node was created.
-
-=item $nrnodes = $h->aug_defvar ($name, $expr);
-
-Defines an Augeas variable C<name> whose value is the result
-of evaluating C<expr>. If C<expr> is NULL, then C<name> is
-undefined.
-
-On success this returns the number of nodes in C<expr>, or
-C<0> if C<expr> evaluates to something which is not a nodeset.
-
-=item $val = $h->aug_get ($path);
-
-Look up the value associated with C<path>. If C<path>
-matches exactly one node, the C<value> is returned.
-
-=item $h->aug_init ($root, $flags);
-
-Create a new Augeas handle for editing configuration files.
-If there was any previous Augeas handle associated with this
-guestfs session, then it is closed.
-
-You must call this before using any other C<$h-E<gt>aug_*>
-commands.
-
-C<root> is the filesystem root. C<root> must not be NULL,
-use C</> instead.
-
-The flags are the same as the flags defined in
-E<lt>augeas.hE<gt>, the logical I<or> of the following
-integers:
-
-=over 4
-
-=item C<AUG_SAVE_BACKUP> = 1
-
-Keep the original file with a C<.augsave> extension.
-
-=item C<AUG_SAVE_NEWFILE> = 2
-
-Save changes into a file with extension C<.augnew>, and
-do not overwrite original. Overrides C<AUG_SAVE_BACKUP>.
-
-=item C<AUG_TYPE_CHECK> = 4
-
-Typecheck lenses (can be expensive).
-
-=item C<AUG_NO_STDINC> = 8
-
-Do not use standard load path for modules.
-
-=item C<AUG_SAVE_NOOP> = 16
-
-Make save a no-op, just record what would have been changed.
-
-=item C<AUG_NO_LOAD> = 32
-
-Do not load the tree in C<$h-E<gt>aug_init>.
-
-=back
-
-To close the handle, you can call C<$h-E<gt>aug_close>.
-
-To find out more about Augeas, see L<http://augeas.net/>.
-
-=item $h->aug_insert ($path, $label, $before);
-
-Create a new sibling C<label> for C<path>, inserting it into
-the tree before or after C<path> (depending on the boolean
-flag C<before>).
-
-C<path> must match exactly one existing node in the tree, and
-C<label> must be a label, ie. not contain C</>, C<*> or end
-with a bracketed index C<[N]>.
-
-=item $h->aug_load ();
-
-Load files into the tree.
-
-See C<aug_load> in the Augeas documentation for the full gory
-details.
-
-=item @matches = $h->aug_ls ($path);
-
-This is just a shortcut for listing C<$h-E<gt>aug_match>
-C<path/*> and sorting the resulting nodes into alphabetical order.
-
-=item @matches = $h->aug_match ($path);
-
-Returns a list of paths which match the path expression C<path>.
-The returned paths are sufficiently qualified so that they match
-exactly one node in the current tree.
-
-=item $h->aug_mv ($src, $dest);
-
-Move the node C<src> to C<dest>. C<src> must match exactly
-one node. C<dest> is overwritten if it exists.
-
-=item $nrnodes = $h->aug_rm ($path);
-
-Remove C<path> and all of its children.
-
-On success this returns the number of entries which were removed.
-
-=item $h->aug_save ();
-
-This writes all pending changes to disk.
-
-The flags which were passed to C<$h-E<gt>aug_init> affect exactly
-how files are saved.
-
-=item $h->aug_set ($path, $val);
-
-Set the value associated with C<path> to C<value>.
-
-=item $h->blockdev_flushbufs ($device);
-
-This tells the kernel to flush internal buffers associated
-with C<device>.
-
-This uses the L<blockdev(8)> command.
-
-=item $blocksize = $h->blockdev_getbsz ($device);
-
-This returns the block size of a device.
-
-(Note this is different from both I<size in blocks> and
-I<filesystem block size>).
-
-This uses the L<blockdev(8)> command.
-
-=item $ro = $h->blockdev_getro ($device);
-
-Returns a boolean indicating if the block device is read-only
-(true if read-only, false if not).
-
-This uses the L<blockdev(8)> command.
-
-=item $sizeinbytes = $h->blockdev_getsize64 ($device);
-
-This returns the size of the device in bytes.
-
-See also C<$h-E<gt>blockdev_getsz>.
-
-This uses the L<blockdev(8)> command.
-
-=item $sectorsize = $h->blockdev_getss ($device);
-
-This returns the size of sectors on a block device.
-Usually 512, but can be larger for modern devices.
-
-(Note, this is not the size in sectors, use C<$h-E<gt>blockdev_getsz>
-for that).
-
-This uses the L<blockdev(8)> command.
-
-=item $sizeinsectors = $h->blockdev_getsz ($device);
-
-This returns the size of the device in units of 512-byte sectors
-(even if the sectorsize isn't 512 bytes ... weird).
-
-See also C<$h-E<gt>blockdev_getss> for the real sector size of
-the device, and C<$h-E<gt>blockdev_getsize64> for the more
-useful I<size in bytes>.
-
-This uses the L<blockdev(8)> command.
-
-=item $h->blockdev_rereadpt ($device);
-
-Reread the partition table on C<device>.
-
-This uses the L<blockdev(8)> command.
-
-=item $h->blockdev_setbsz ($device, $blocksize);
-
-This sets the block size of a device.
-
-(Note this is different from both I<size in blocks> and
-I<filesystem block size>).
-
-This uses the L<blockdev(8)> command.
-
-=item $h->blockdev_setro ($device);
-
-Sets the block device named C<device> to read-only.
-
-This uses the L<blockdev(8)> command.
-
-=item $h->blockdev_setrw ($device);
-
-Sets the block device named C<device> to read-write.
-
-This uses the L<blockdev(8)> command.
-
-=item $content = $h->cat ($path);
-
-Return the contents of the file named C<path>.
-
-Note that this function cannot correctly handle binary files
-(specifically, files containing C<\0> character which is treated
-as end of string). For those you need to use the C<$h-E<gt>download>
-function which has a more complex interface.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $checksum = $h->checksum ($csumtype, $path);
-
-This call computes the MD5, SHAx or CRC checksum of the
-file named C<path>.
-
-The type of checksum to compute is given by the C<csumtype>
-parameter which must have one of the following values:
-
-=over 4
-
-=item C<crc>
-
-Compute the cyclic redundancy check (CRC) specified by POSIX
-for the C<cksum> command.
-
-=item C<md5>
-
-Compute the MD5 hash (using the C<md5sum> program).
-
-=item C<sha1>
-
-Compute the SHA1 hash (using the C<sha1sum> program).
-
-=item C<sha224>
-
-Compute the SHA224 hash (using the C<sha224sum> program).
-
-=item C<sha256>
-
-Compute the SHA256 hash (using the C<sha256sum> program).
-
-=item C<sha384>
-
-Compute the SHA384 hash (using the C<sha384sum> program).
-
-=item C<sha512>
-
-Compute the SHA512 hash (using the C<sha512sum> program).
-
-=back
-
-The checksum is returned as a printable string.
-
-=item $h->chmod ($mode, $path);
-
-Change the mode (permissions) of C<path> to C<mode>. Only
-numeric modes are supported.
-
-=item $h->chown ($owner, $group, $path);
-
-Change the file owner to C<owner> and group to C<group>.
-
-Only numeric uid and gid are supported. If you want to use
-names, you will need to locate and parse the password file
-yourself (Augeas support makes this relatively easy).
-
-=item $output = $h->command (\@arguments);
-
-This call runs a command from the guest filesystem. The
-filesystem must be mounted, and must contain a compatible
-operating system (ie. something Linux, with the same
-or compatible processor architecture).
-
-The single parameter is an argv-style list of arguments.
-The first element is the name of the program to run.
-Subsequent elements are parameters. The list must be
-non-empty (ie. must contain a program name). Note that
-the command runs directly, and is I<not> invoked via
-the shell (see C<$h-E<gt>sh>).
-
-The return value is anything printed to I<stdout> by
-the command.
-
-If the command returns a non-zero exit status, then
-this function returns an error message. The error message
-string is the content of I<stderr> from the command.
-
-The C<$PATH> environment variable will contain at least
-C</usr/bin> and C</bin>. If you require a program from
-another location, you should provide the full path in the
-first parameter.
-
-Shared libraries and data files required by the program
-must be available on filesystems which are mounted in the
-correct places. It is the caller's responsibility to ensure
-all filesystems that are needed are mounted at the right
-locations.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item @lines = $h->command_lines (\@arguments);
-
-This is the same as C<$h-E<gt>command>, but splits the
-result into a list of lines.
-
-See also: C<$h-E<gt>sh_lines>
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $h->config ($qemuparam, $qemuvalue);
-
-This can be used to add arbitrary qemu command line parameters
-of the form C<-param value>. Actually it's not quite arbitrary - we
-prevent you from setting some parameters which would interfere with
-parameters that we use.
-
-The first character of C<param> string must be a C<-> (dash).
-
-C<value> can be NULL.
-
-=item $h->cp ($src, $dest);
-
-This copies a file from C<src> to C<dest> where C<dest> is
-either a destination filename or destination directory.
-
-=item $h->cp_a ($src, $dest);
-
-This copies a file or directory from C<src> to C<dest>
-recursively using the C<cp -a> command.
-
-=item $result = $h->debug ($subcmd, \@extraargs);
-
-The C<$h-E<gt>debug> command exposes some internals of
-C<guestfsd> (the guestfs daemon) that runs inside the
-qemu subprocess.
-
-There is no comprehensive help for this command. You have
-to look at the file C<daemon/debug.c> in the libguestfs source
-to find out what you can do.
-
-=item $output = $h->df ();
-
-This command runs the C<df> command to report disk space used.
-
-This command is mostly useful for interactive sessions. It
-is I<not> intended that you try to parse the output string.
-Use C<statvfs> from programs.
-
-=item $output = $h->df_h ();
-
-This command runs the C<df -h> command to report disk space used
-in human-readable format.
-
-This command is mostly useful for interactive sessions. It
-is I<not> intended that you try to parse the output string.
-Use C<statvfs> from programs.
-
-=item $kmsgs = $h->dmesg ();
-
-This returns the kernel messages (C<dmesg> output) from
-the guest kernel. This is sometimes useful for extended
-debugging of problems.
-
-Another way to get the same information is to enable
-verbose messages with C<$h-E<gt>set_verbose> or by setting
-the environment variable C<LIBGUESTFS_DEBUG=1> before
-running the program.
-
-=item $h->download ($remotefilename, $filename);
-
-Download file C<remotefilename> and save it as C<filename>
-on the local machine.
-
-C<filename> can also be a named pipe.
-
-See also C<$h-E<gt>upload>, C<$h-E<gt>cat>.
-
-=item $h->drop_caches ($whattodrop);
-
-This instructs the guest kernel to drop its page cache,
-and/or dentries and inode caches. The parameter C<whattodrop>
-tells the kernel what precisely to drop, see
-L<http://linux-mm.org/Drop_Caches>
-
-Setting C<whattodrop> to 3 should drop everything.
-
-This automatically calls L<sync(2)> before the operation,
-so that the maximum guest memory is freed.
-
-=item $sizekb = $h->du ($path);
-
-This command runs the C<du -s> command to estimate file space
-usage for C<path>.
-
-C<path> can be a file or a directory. If C<path> is a directory
-then the estimate includes the contents of the directory and all
-subdirectories (recursively).
-
-The result is the estimated size in I<kilobytes>
-(ie. units of 1024 bytes).
-
-=item $h->e2fsck_f ($device);
-
-This runs C<e2fsck -p -f device>, ie. runs the ext2/ext3
-filesystem checker on C<device>, noninteractively (C<-p>),
-even if the filesystem appears to be clean (C<-f>).
-
-This command is only needed because of C<$h-E<gt>resize2fs>
-(q.v.). Normally you should use C<$h-E<gt>fsck>.
-
-=item $h->end_busy ();
-
-This sets the state to C<READY>, or if in C<CONFIG> then it leaves the
-state as is. This is only used when implementing
-actions using the low-level API.
-
-For more information on states, see L<guestfs(3)>.
-
-=item $equality = $h->equal ($file1, $file2);
-
-This compares the two files C<file1> and C<file2> and returns
-true if their content is exactly equal, or false otherwise.
-
-The external L<cmp(1)> program is used for the comparison.
-
-=item $existsflag = $h->exists ($path);
-
-This returns C<true> if and only if there is a file, directory
-(or anything) with the given C<path> name.
-
-See also C<$h-E<gt>is_file>, C<$h-E<gt>is_dir>, C<$h-E<gt>stat>.
-
-=item $description = $h->file ($path);
-
-This call uses the standard L<file(1)> command to determine
-the type or contents of the file. This also works on devices,
-for example to find out whether a partition contains a filesystem.
-
-The exact command which runs is C<file -bsL path>. Note in
-particular that the filename is not prepended to the output
-(the C<-b> option).
-
-=item @names = $h->find ($directory);
-
-This command lists out all files and directories, recursively,
-starting at C<directory>. It is essentially equivalent to
-running the shell command C<find directory -print> but some
-post-processing happens on the output, described below.
-
-This returns a list of strings I<without any prefix>. Thus
-if the directory structure was:
-
- /tmp/a
- /tmp/b
- /tmp/c/d
-
-then the returned list from C<$h-E<gt>find> C</tmp> would be
-4 elements:
-
- a
- b
- c
- c/d
-
-If C<directory> is not a directory, then this command returns
-an error.
-
-The returned list is sorted.
-
-=item $status = $h->fsck ($fstype, $device);
-
-This runs the filesystem checker (fsck) on C<device> which
-should have filesystem type C<fstype>.
-
-The returned integer is the status. See L<fsck(8)> for the
-list of status codes from C<fsck>.
-
-Notes:
-
-=over 4
-
-=item *
-
-Multiple status codes can be summed together.
-
-=item *
-
-A non-zero return code can mean "success", for example if
-errors have been corrected on the filesystem.
-
-=item *
-
-Checking or repairing NTFS volumes is not supported
-(by linux-ntfs).
-
-=back
-
-This command is entirely equivalent to running C<fsck -a -t fstype device>.
-
-=item $append = $h->get_append ();
-
-Return the additional kernel options which are added to the
-guest kernel command line.
-
-If C<NULL> then no options are added.
-
-=item $autosync = $h->get_autosync ();
-
-Get the autosync flag.
-
-=item $label = $h->get_e2label ($device);
-
-This returns the ext2/3/4 filesystem label of the filesystem on
-C<device>.
-
-=item $uuid = $h->get_e2uuid ($device);
-
-This returns the ext2/3/4 filesystem UUID of the filesystem on
-C<device>.
-
-=item $memsize = $h->get_memsize ();
-
-This gets the memory size in megabytes allocated to the
-qemu subprocess.
-
-If C<$h-E<gt>set_memsize> was not called
-on this handle, and if C<LIBGUESTFS_MEMSIZE> was not set,
-then this returns the compiled-in default value for memsize.
-
-For more information on the architecture of libguestfs,
-see L<guestfs(3)>.
-
-=item $path = $h->get_path ();
-
-Return the current search path.
-
-This is always non-NULL. If it wasn't set already, then this will
-return the default path.
-
-=item $qemu = $h->get_qemu ();
-
-Return the current qemu binary.
-
-This is always non-NULL. If it wasn't set already, then this will
-return the default qemu binary name.
-
-=item $state = $h->get_state ();
-
-This returns the current state as an opaque integer. This is
-only useful for printing debug and internal error messages.
-
-For more information on states, see L<guestfs(3)>.
-
-=item $verbose = $h->get_verbose ();
-
-This returns the verbose messages flag.
-
-=item @paths = $h->glob_expand ($pattern);
-
-This command searches for all the pathnames matching
-C<pattern> according to the wildcard expansion rules
-used by the shell.
-
-If no paths match, then this returns an empty list
-(note: not an error).
-
-It is just a wrapper around the C L<glob(3)> function
-with flags C<GLOB_MARK|GLOB_BRACE>.
-See that manual page for more details.
-
-=item $h->grub_install ($root, $device);
-
-This command installs GRUB (the Grand Unified Bootloader) on
-C<device>, with the root directory being C<root>.
-
-=item @lines = $h->head ($path);
-
-This command returns up to the first 10 lines of a file as
-a list of strings.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item @lines = $h->head_n ($nrlines, $path);
-
-If the parameter C<nrlines> is a positive number, this returns the first
-C<nrlines> lines of the file C<path>.
-
-If the parameter C<nrlines> is a negative number, this returns lines
-from the file C<path>, excluding the last C<nrlines> lines.
-
-If the parameter C<nrlines> is zero, this returns an empty list.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $dump = $h->hexdump ($path);
-
-This runs C<hexdump -C> on the given C<path>. The result is
-the human-readable, canonical hex dump of the file.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item @filenames = $h->initrd_list ($path);
-
-This command lists out files contained in an initrd.
-
-The files are listed without any initial C</> character. The
-files are listed in the order they appear (not necessarily
-alphabetical). Directory names are listed as separate items.
-
-Old Linux kernels (2.4 and earlier) used a compressed ext2
-filesystem as initrd. We I<only> support the newer initramfs
-format (compressed cpio files).
-
-=item $busy = $h->is_busy ();
-
-This returns true iff this handle is busy processing a command
-(in the C<BUSY> state).
-
-For more information on states, see L<guestfs(3)>.
-
-=item $config = $h->is_config ();
-
-This returns true iff this handle is being configured
-(in the C<CONFIG> state).
-
-For more information on states, see L<guestfs(3)>.
-
-=item $dirflag = $h->is_dir ($path);
-
-This returns C<true> if and only if there is a directory
-with the given C<path> name. Note that it returns false for
-other objects like files.
-
-See also C<$h-E<gt>stat>.
-
-=item $fileflag = $h->is_file ($path);
-
-This returns C<true> if and only if there is a file
-with the given C<path> name. Note that it returns false for
-other objects like directories.
-
-See also C<$h-E<gt>stat>.
-
-=item $launching = $h->is_launching ();
-
-This returns true iff this handle is launching the subprocess
-(in the C<LAUNCHING> state).
-
-For more information on states, see L<guestfs(3)>.
-
-=item $ready = $h->is_ready ();
-
-This returns true iff this handle is ready to accept commands
-(in the C<READY> state).
-
-For more information on states, see L<guestfs(3)>.
-
-=item $h->kill_subprocess ();
-
-This kills the qemu subprocess. You should never need to call this.
-
-=item $h->launch ();
-
-Internally libguestfs is implemented by running a virtual machine
-using L<qemu(1)>.
-
-You should call this after configuring the handle
-(eg. adding drives) but before performing any actions.
-
-=item @devices = $h->list_devices ();
-
-List all the block devices.
-
-The full block device names are returned, eg. C</dev/sda>
-
-=item @partitions = $h->list_partitions ();
-
-List all the partitions detected on all block devices.
-
-The full partition device names are returned, eg. C</dev/sda1>
-
-This does not return logical volumes. For that you will need to
-call C<$h-E<gt>lvs>.
-
-=item $listing = $h->ll ($directory);
-
-List the files in C<directory> (relative to the root directory,
-there is no cwd) in the format of 'ls -la'.
-
-This command is mostly useful for interactive sessions. It
-is I<not> intended that you try to parse the output string.
-
-=item @listing = $h->ls ($directory);
-
-List the files in C<directory> (relative to the root directory,
-there is no cwd). The '.' and '..' entries are not returned, but
-hidden files are shown.
-
-This command is mostly useful for interactive sessions. Programs
-should probably use C<$h-E<gt>readdir> instead.
-
-=item %statbuf = $h->lstat ($path);
-
-Returns file information for the given C<path>.
-
-This is the same as C<$h-E<gt>stat> except that if C<path>
-is a symbolic link, then the link is stat-ed, not the file it
-refers to.
-
-This is the same as the C<lstat(2)> system call.
-
-=item $h->lvcreate ($logvol, $volgroup, $mbytes);
-
-This creates an LVM volume group called C<logvol>
-on the volume group C<volgroup>, with C<size> megabytes.
-
-=item $h->lvm_remove_all ();
-
-This command removes all LVM logical volumes, volume groups
-and physical volumes.
-
-B<This command is dangerous. Without careful use you
-can easily destroy all your data>.
-
-=item $h->lvremove ($device);
-
-Remove an LVM logical volume C<device>, where C<device> is
-the path to the LV, such as C</dev/VG/LV>.
-
-You can also remove all LVs in a volume group by specifying
-the VG name, C</dev/VG>.
-
-=item $h->lvresize ($device, $mbytes);
-
-This resizes (expands or shrinks) an existing LVM logical
-volume to C<mbytes>. When reducing, data in the reduced part
-is lost.
-
-=item @logvols = $h->lvs ();
-
-List all the logical volumes detected. This is the equivalent
-of the L<lvs(8)> command.
-
-This returns a list of the logical volume device names
-(eg. C</dev/VolGroup00/LogVol00>).
-
-See also C<$h-E<gt>lvs_full>.
-
-=item @logvols = $h->lvs_full ();
-
-List all the logical volumes detected. This is the equivalent
-of the L<lvs(8)> command. The "full" version includes all fields.
-
-=item $h->mkdir ($path);
-
-Create a directory named C<path>.
-
-=item $h->mkdir_p ($path);
-
-Create a directory named C<path>, creating any parent directories
-as necessary. This is like the C<mkdir -p> shell command.
-
-=item $dir = $h->mkdtemp ($template);
-
-This command creates a temporary directory. The
-C<template> parameter should be a full pathname for the
-temporary directory name with the final six characters being
-"XXXXXX".
-
-For example: "/tmp/myprogXXXXXX" or "/Temp/myprogXXXXXX",
-the second one being suitable for Windows filesystems.
-
-The name of the temporary directory that was created
-is returned.
-
-The temporary directory is created with mode 0700
-and is owned by root.
-
-The caller is responsible for deleting the temporary
-directory and its contents after use.
-
-See also: L<mkdtemp(3)>
-
-=item $h->mkfifo ($mode, $path);
-
-This call creates a FIFO (named pipe) called C<path> with
-mode C<mode>. It is just a convenient wrapper around
-C<$h-E<gt>mknod>.
-
-=item $h->mkfs ($fstype, $device);
-
-This creates a filesystem on C<device> (usually a partition
-or LVM logical volume). The filesystem type is C<fstype>, for
-example C<ext3>.
-
-=item $h->mknod ($mode, $devmajor, $devminor, $path);
-
-This call creates block or character special devices, or
-named pipes (FIFOs).
-
-The C<mode> parameter should be the mode, using the standard
-constants. C<devmajor> and C<devminor> are the
-device major and minor numbers, only used when creating block
-and character special devices.
-
-=item $h->mknod_b ($mode, $devmajor, $devminor, $path);
-
-This call creates a block device node called C<path> with
-mode C<mode> and device major/minor C<devmajor> and C<devminor>.
-It is just a convenient wrapper around C<$h-E<gt>mknod>.
-
-=item $h->mknod_c ($mode, $devmajor, $devminor, $path);
-
-This call creates a char device node called C<path> with
-mode C<mode> and device major/minor C<devmajor> and C<devminor>.
-It is just a convenient wrapper around C<$h-E<gt>mknod>.
-
-=item $h->mkswap ($device);
-
-Create a swap partition on C<device>.
-
-=item $h->mkswap_L ($label, $device);
-
-Create a swap partition on C<device> with label C<label>.
-
-=item $h->mkswap_U ($uuid, $device);
-
-Create a swap partition on C<device> with UUID C<uuid>.
-
-=item $h->mount ($device, $mountpoint);
-
-Mount a guest disk at a position in the filesystem. Block devices
-are named C</dev/sda>, C</dev/sdb> and so on, as they were added to
-the guest. If those block devices contain partitions, they will have
-the usual names (eg. C</dev/sda1>). Also LVM C</dev/VG/LV>-style
-names can be used.
-
-The rules are the same as for L<mount(2)>: A filesystem must
-first be mounted on C</> before others can be mounted. Other
-filesystems can only be mounted on directories which already
-exist.
-
-The mounted filesystem is writable, if we have sufficient permissions
-on the underlying device.
-
-The filesystem options C<sync> and C<noatime> are set with this
-call, in order to improve reliability.
-
-=item $h->mount_loop ($file, $mountpoint);
-
-This command lets you mount C<file> (a filesystem image
-in a file) on a mount point. It is entirely equivalent to
-the command C<mount -o loop file mountpoint>.
-
-=item $h->mount_options ($options, $device, $mountpoint);
-
-This is the same as the C<$h-E<gt>mount> command, but it
-allows you to set the mount options as for the
-L<mount(8)> I<-o> flag.
-
-=item $h->mount_ro ($device, $mountpoint);
-
-This is the same as the C<$h-E<gt>mount> command, but it
-mounts the filesystem with the read-only (I<-o ro>) flag.
-
-=item $h->mount_vfs ($options, $vfstype, $device, $mountpoint);
-
-This is the same as the C<$h-E<gt>mount> command, but it
-allows you to set both the mount options and the vfstype
-as for the L<mount(8)> I<-o> and I<-t> flags.
-
-=item @devices = $h->mounts ();
-
-This returns the list of currently mounted filesystems. It returns
-the list of devices (eg. C</dev/sda1>, C</dev/VG/LV>).
-
-Some internal mounts are not shown.
-
-=item $h->mv ($src, $dest);
-
-This moves a file from C<src> to C<dest> where C<dest> is
-either a destination filename or destination directory.
-
-=item $status = $h->ntfs_3g_probe ($rw, $device);
-
-This command runs the L<ntfs-3g.probe(8)> command which probes
-an NTFS C<device> for mountability. (Not all NTFS volumes can
-be mounted read-write, and some cannot be mounted at all).
-
-C<rw> is a boolean flag. Set it to true if you want to test
-if the volume can be mounted read-write. Set it to false if
-you want to test if the volume can be mounted read-only.
-
-The return value is an integer which C<0> if the operation
-would succeed, or some non-zero value documented in the
-L<ntfs-3g.probe(8)> manual page.
-
-=item $h->ping_daemon ();
-
-This is a test probe into the guestfs daemon running inside
-the qemu subprocess. Calling this function checks that the
-daemon responds to the ping message, without affecting the daemon
-or attached block device(s) in any other way.
-
-=item $h->pvcreate ($device);
-
-This creates an LVM physical volume on the named C<device>,
-where C<device> should usually be a partition name such
-as C</dev/sda1>.
-
-=item $h->pvremove ($device);
-
-This wipes a physical volume C<device> so that LVM will no longer
-recognise it.
-
-The implementation uses the C<pvremove> command which refuses to
-wipe physical volumes that contain any volume groups, so you have
-to remove those first.
-
-=item $h->pvresize ($device);
-
-This resizes (expands or shrinks) an existing LVM physical
-volume to match the new size of the underlying device.
-
-=item @physvols = $h->pvs ();
-
-List all the physical volumes detected. This is the equivalent
-of the L<pvs(8)> command.
-
-This returns a list of just the device names that contain
-PVs (eg. C</dev/sda2>).
-
-See also C<$h-E<gt>pvs_full>.
-
-=item @physvols = $h->pvs_full ();
-
-List all the physical volumes detected. This is the equivalent
-of the L<pvs(8)> command. The "full" version includes all fields.
-
-=item @lines = $h->read_lines ($path);
-
-Return the contents of the file named C<path>.
-
-The file contents are returned as a list of lines. Trailing
-C<LF> and C<CRLF> character sequences are I<not> returned.
-
-Note that this function cannot correctly handle binary files
-(specifically, files containing C<\0> character which is treated
-as end of line). For those you need to use the C<$h-E<gt>read_file>
-function which has a more complex interface.
-
-=item @entries = $h->readdir ($dir);
-
-This returns the list of directory entries in directory C<dir>.
-
-All entries in the directory are returned, including C<.> and
-C<..>. The entries are I<not> sorted, but returned in the same
-order as the underlying filesystem.
-
-This function is primarily intended for use by programs. To
-get a simple list of names, use C<$h-E<gt>ls>. To get a printable
-directory for human consumption, use C<$h-E<gt>ll>.
-
-=item $h->resize2fs ($device);
-
-This resizes an ext2 or ext3 filesystem to match the size of
-the underlying device.
-
-I<Note:> It is sometimes required that you run C<$h-E<gt>e2fsck_f>
-on the C<device> before calling this command. For unknown reasons
-C<resize2fs> sometimes gives an error about this and sometimes not.
-In any case, it is always safe to call C<$h-E<gt>e2fsck_f> before
-calling this function.
-
-=item $h->rm ($path);
-
-Remove the single file C<path>.
-
-=item $h->rm_rf ($path);
-
-Remove the file or directory C<path>, recursively removing the
-contents if its a directory. This is like the C<rm -rf> shell
-command.
-
-=item $h->rmdir ($path);
-
-Remove the single directory C<path>.
-
-=item $h->scrub_device ($device);
-
-This command writes patterns over C<device> to make data retrieval
-more difficult.
-
-It is an interface to the L<scrub(1)> program. See that
-manual page for more details.
-
-B<This command is dangerous. Without careful use you
-can easily destroy all your data>.
-
-=item $h->scrub_file ($file);
-
-This command writes patterns over a file to make data retrieval
-more difficult.
-
-The file is I<removed> after scrubbing.
-
-It is an interface to the L<scrub(1)> program. See that
-manual page for more details.
-
-=item $h->scrub_freespace ($dir);
-
-This command creates the directory C<dir> and then fills it
-with files until the filesystem is full, and scrubs the files
-as for C<$h-E<gt>scrub_file>, and deletes them.
-The intention is to scrub any free space on the partition
-containing C<dir>.
-
-It is an interface to the L<scrub(1)> program. See that
-manual page for more details.
-
-=item $h->set_append ($append);
-
-This function is used to add additional options to the
-guest kernel command line.
-
-The default is C<NULL> unless overridden by setting
-C<LIBGUESTFS_APPEND> environment variable.
-
-Setting C<append> to C<NULL> means I<no> additional options
-are passed (libguestfs always adds a few of its own).
-
-=item $h->set_autosync ($autosync);
-
-If C<autosync> is true, this enables autosync. Libguestfs will make a
-best effort attempt to run C<$h-E<gt>umount_all> followed by
-C<$h-E<gt>sync> when the handle is closed
-(also if the program exits without closing handles).
-
-This is disabled by default (except in guestfish where it is
-enabled by default).
-
-=item $h->set_busy ();
-
-This sets the state to C<BUSY>. This is only used when implementing
-actions using the low-level API.
-
-For more information on states, see L<guestfs(3)>.
-
-=item $h->set_e2label ($device, $label);
-
-This sets the ext2/3/4 filesystem label of the filesystem on
-C<device> to C<label>. Filesystem labels are limited to
-16 characters.
-
-You can use either C<$h-E<gt>tune2fs_l> or C<$h-E<gt>get_e2label>
-to return the existing label on a filesystem.
-
-=item $h->set_e2uuid ($device, $uuid);
-
-This sets the ext2/3/4 filesystem UUID of the filesystem on
-C<device> to C<uuid>. The format of the UUID and alternatives
-such as C<clear>, C<random> and C<time> are described in the
-L<tune2fs(8)> manpage.
-
-You can use either C<$h-E<gt>tune2fs_l> or C<$h-E<gt>get_e2uuid>
-to return the existing UUID of a filesystem.
-
-=item $h->set_memsize ($memsize);
-
-This sets the memory size in megabytes allocated to the
-qemu subprocess. This only has any effect if called before
-C<$h-E<gt>launch>.
-
-You can also change this by setting the environment
-variable C<LIBGUESTFS_MEMSIZE> before the handle is
-created.
-
-For more information on the architecture of libguestfs,
-see L<guestfs(3)>.
-
-=item $h->set_path ($path);
-
-Set the path that libguestfs searches for kernel and initrd.img.
-
-The default is C<$libdir/guestfs> unless overridden by setting
-C<LIBGUESTFS_PATH> environment variable.
-
-Setting C<path> to C<NULL> restores the default path.
-
-=item $h->set_qemu ($qemu);
-
-Set the qemu binary that we will use.
-
-The default is chosen when the library was compiled by the
-configure script.
-
-You can also override this by setting the C<LIBGUESTFS_QEMU>
-environment variable.
-
-Setting C<qemu> to C<NULL> restores the default qemu binary.
-
-=item $h->set_ready ();
-
-This sets the state to C<READY>. This is only used when implementing
-actions using the low-level API.
-
-For more information on states, see L<guestfs(3)>.
-
-=item $h->set_verbose ($verbose);
-
-If C<verbose> is true, this turns on verbose messages (to C<stderr>).
-
-Verbose messages are disabled unless the environment variable
-C<LIBGUESTFS_DEBUG> is defined and set to C<1>.
-
-=item $h->sfdisk ($device, $cyls, $heads, $sectors, \@lines);
-
-This is a direct interface to the L<sfdisk(8)> program for creating
-partitions on block devices.
-
-C<device> should be a block device, for example C</dev/sda>.
-
-C<cyls>, C<heads> and C<sectors> are the number of cylinders, heads
-and sectors on the device, which are passed directly to sfdisk as
-the I<-C>, I<-H> and I<-S> parameters. If you pass C<0> for any
-of these, then the corresponding parameter is omitted. Usually for
-'large' disks, you can just pass C<0> for these, but for small
-(floppy-sized) disks, sfdisk (or rather, the kernel) cannot work
-out the right geometry and you will need to tell it.
-
-C<lines> is a list of lines that we feed to C<sfdisk>. For more
-information refer to the L<sfdisk(8)> manpage.
-
-To create a single partition occupying the whole disk, you would
-pass C<lines> as a single element list, when the single element being
-the string C<,> (comma).
-
-See also: C<$h-E<gt>sfdisk_l>, C<$h-E<gt>sfdisk_N>
-
-B<This command is dangerous. Without careful use you
-can easily destroy all your data>.
-
-=item $h->sfdisk_N ($device, $partnum, $cyls, $heads, $sectors, $line);
-
-This runs L<sfdisk(8)> option to modify just the single
-partition C<n> (note: C<n> counts from 1).
-
-For other parameters, see C<$h-E<gt>sfdisk>. You should usually
-pass C<0> for the cyls/heads/sectors parameters.
-
-B<This command is dangerous. Without careful use you
-can easily destroy all your data>.
-
-=item $partitions = $h->sfdisk_disk_geometry ($device);
-
-This displays the disk geometry of C<device> read from the
-partition table. Especially in the case where the underlying
-block device has been resized, this can be different from the
-kernel's idea of the geometry (see C<$h-E<gt>sfdisk_kernel_geometry>).
-
-The result is in human-readable format, and not designed to
-be parsed.
-
-=item $partitions = $h->sfdisk_kernel_geometry ($device);
-
-This displays the kernel's idea of the geometry of C<device>.
-
-The result is in human-readable format, and not designed to
-be parsed.
-
-=item $partitions = $h->sfdisk_l ($device);
-
-This displays the partition table on C<device>, in the
-human-readable output of the L<sfdisk(8)> command. It is
-not intended to be parsed.
-
-=item $output = $h->sh ($command);
-
-This call runs a command from the guest filesystem via the
-guest's C</bin/sh>.
-
-This is like C<$h-E<gt>command>, but passes the command to:
-
- /bin/sh -c "command"
-
-Depending on the guest's shell, this usually results in
-wildcards being expanded, shell expressions being interpolated
-and so on.
-
-All the provisos about C<$h-E<gt>command> apply to this call.
-
-=item @lines = $h->sh_lines ($command);
-
-This is the same as C<$h-E<gt>sh>, but splits the result
-into a list of lines.
-
-See also: C<$h-E<gt>command_lines>
-
-=item $h->sleep ($secs);
-
-Sleep for C<secs> seconds.
-
-=item %statbuf = $h->stat ($path);
-
-Returns file information for the given C<path>.
-
-This is the same as the C<stat(2)> system call.
-
-=item %statbuf = $h->statvfs ($path);
-
-Returns file system statistics for any mounted file system.
-C<path> should be a file or directory in the mounted file system
-(typically it is the mount point itself, but it doesn't need to be).
-
-This is the same as the C<statvfs(2)> system call.
-
-=item @stringsout = $h->strings ($path);
-
-This runs the L<strings(1)> command on a file and returns
-the list of printable strings found.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item @stringsout = $h->strings_e ($encoding, $path);
-
-This is like the C<$h-E<gt>strings> command, but allows you to
-specify the encoding.
-
-See the L<strings(1)> manpage for the full list of encodings.
-
-Commonly useful encodings are C<l> (lower case L) which will
-show strings inside Windows/x86 files.
-
-The returned strings are transcoded to UTF-8.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $h->sync ();
-
-This syncs the disk, so that any writes are flushed through to the
-underlying disk image.
-
-You should always call this if you have modified a disk image, before
-closing the handle.
-
-=item @lines = $h->tail ($path);
-
-This command returns up to the last 10 lines of a file as
-a list of strings.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item @lines = $h->tail_n ($nrlines, $path);
-
-If the parameter C<nrlines> is a positive number, this returns the last
-C<nrlines> lines of the file C<path>.
-
-If the parameter C<nrlines> is a negative number, this returns lines
-from the file C<path>, starting with the C<-nrlines>th line.
-
-If the parameter C<nrlines> is zero, this returns an empty list.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $h->tar_in ($tarfile, $directory);
-
-This command uploads and unpacks local file C<tarfile> (an
-I<uncompressed> tar file) into C<directory>.
-
-To upload a compressed tarball, use C<$h-E<gt>tgz_in>.
-
-=item $h->tar_out ($directory, $tarfile);
-
-This command packs the contents of C<directory> and downloads
-it to local file C<tarfile>.
-
-To download a compressed tarball, use C<$h-E<gt>tgz_out>.
-
-=item $h->tgz_in ($tarball, $directory);
-
-This command uploads and unpacks local file C<tarball> (a
-I<gzip compressed> tar file) into C<directory>.
-
-To upload an uncompressed tarball, use C<$h-E<gt>tar_in>.
-
-=item $h->tgz_out ($directory, $tarball);
-
-This command packs the contents of C<directory> and downloads
-it to local file C<tarball>.
-
-To download an uncompressed tarball, use C<$h-E<gt>tar_out>.
-
-=item $h->touch ($path);
-
-Touch acts like the L<touch(1)> command. It can be used to
-update the timestamps on a file, or, if the file does not exist,
-to create a new zero-length file.
-
-=item %superblock = $h->tune2fs_l ($device);
-
-This returns the contents of the ext2, ext3 or ext4 filesystem
-superblock on C<device>.
-
-It is the same as running C<tune2fs -l device>. See L<tune2fs(8)>
-manpage for more details. The list of fields returned isn't
-clearly defined, and depends on both the version of C<tune2fs>
-that libguestfs was built against, and the filesystem itself.
-
-=item $oldmask = $h->umask ($mask);
-
-This function sets the mask used for creating new files and
-device nodes to C<mask & 0777>.
-
-Typical umask values would be C<022> which creates new files
-with permissions like "-rw-r--r--" or "-rwxr-xr-x", and
-C<002> which creates new files with permissions like
-"-rw-rw-r--" or "-rwxrwxr-x".
-
-The default umask is C<022>. This is important because it
-means that directories and device nodes will be created with
-C<0644> or C<0755> mode even if you specify C<0777>.
-
-See also L<umask(2)>, C<$h-E<gt>mknod>, C<$h-E<gt>mkdir>.
-
-This call returns the previous umask.
-
-=item $h->umount ($pathordevice);
-
-This unmounts the given filesystem. The filesystem may be
-specified either by its mountpoint (path) or the device which
-contains the filesystem.
-
-=item $h->umount_all ();
-
-This unmounts all mounted filesystems.
-
-Some internal mounts are not unmounted by this call.
-
-=item $h->upload ($filename, $remotefilename);
-
-Upload local file C<filename> to C<remotefilename> on the
-filesystem.
-
-C<filename> can also be a named pipe.
-
-See also C<$h-E<gt>download>.
-
-=item $h->vg_activate ($activate, \@volgroups);
-
-This command activates or (if C<activate> is false) deactivates
-all logical volumes in the listed volume groups C<volgroups>.
-If activated, then they are made known to the
-kernel, ie. they appear as C</dev/mapper> devices. If deactivated,
-then those devices disappear.
-
-This command is the same as running C<vgchange -a y|n volgroups...>
-
-Note that if C<volgroups> is an empty list then B<all> volume groups
-are activated or deactivated.
-
-=item $h->vg_activate_all ($activate);
-
-This command activates or (if C<activate> is false) deactivates
-all logical volumes in all volume groups.
-If activated, then they are made known to the
-kernel, ie. they appear as C</dev/mapper> devices. If deactivated,
-then those devices disappear.
-
-This command is the same as running C<vgchange -a y|n>
-
-=item $h->vgcreate ($volgroup, \@physvols);
-
-This creates an LVM volume group called C<volgroup>
-from the non-empty list of physical volumes C<physvols>.
-
-=item $h->vgremove ($vgname);
-
-Remove an LVM volume group C<vgname>, (for example C<VG>).
-
-This also forcibly removes all logical volumes in the volume
-group (if any).
-
-=item @volgroups = $h->vgs ();
-
-List all the volumes groups detected. This is the equivalent
-of the L<vgs(8)> command.
-
-This returns a list of just the volume group names that were
-detected (eg. C<VolGroup00>).
-
-See also C<$h-E<gt>vgs_full>.
-
-=item @volgroups = $h->vgs_full ();
-
-List all the volumes groups detected. This is the equivalent
-of the L<vgs(8)> command. The "full" version includes all fields.
-
-=item $h->wait_ready ();
-
-Internally libguestfs is implemented by running a virtual machine
-using L<qemu(1)>.
-
-You should call this after C<$h-E<gt>launch> to wait for the launch
-to complete.
-
-=item $chars = $h->wc_c ($path);
-
-This command counts the characters in a file, using the
-C<wc -c> external command.
-
-=item $lines = $h->wc_l ($path);
-
-This command counts the lines in a file, using the
-C<wc -l> external command.
-
-=item $words = $h->wc_w ($path);
-
-This command counts the words in a file, using the
-C<wc -w> external command.
-
-=item $h->write_file ($path, $content, $size);
-
-This call creates a file called C<path>. The contents of the
-file is the string C<content> (which can contain any 8 bit data),
-with length C<size>.
-
-As a special case, if C<size> is C<0>
-then the length is calculated using C<strlen> (so in this case
-the content cannot contain embedded ASCII NULs).
-
-I<NB.> Owing to a bug, writing content containing ASCII NUL
-characters does I<not> work, even if the length is specified.
-We hope to resolve this bug in a future version. In the meantime
-use C<$h-E<gt>upload>.
-
-Because of the message protocol, there is a transfer limit
-of somewhere between 2MB and 4MB. To transfer large files you should use
-FTP.
-
-=item $h->zero ($device);
-
-This command writes zeroes over the first few blocks of C<device>.
-
-How many blocks are zeroed isn't specified (but it's I<not> enough
-to securely wipe the device). It should be sufficient to remove
-any partition tables, filesystem superblocks and so on.
-
-See also: C<$h-E<gt>scrub_device>.
-
-=item $h->zerofree ($device);
-
-This runs the I<zerofree> program on C<device>. This program
-claims to zero unused inodes and disk blocks on an ext2/3
-filesystem, thus making it possible to compress the filesystem
-more effectively.
-
-You should B<not> run this program if the filesystem is
-mounted.
-
-It is possible that using this program can damage the filesystem
-or data on the filesystem.
-
-=cut
-
-1;
-
-=back
-
-=head1 COPYRIGHT
-
-Copyright (C) 2009 Red Hat Inc.
-
-=head1 LICENSE
-
-Please see the file COPYING.LIB for the full license.
-
-=head1 SEE ALSO
-
-L<guestfs(3)>, L<guestfish(1)>.
-
-=cut