diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2009-07-02 11:38:36 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2009-07-02 11:51:16 +0100 |
commit | b3cb0b04eb2d38ba32c160a83d8e3894b376907b (patch) | |
tree | e626b236e7d4bc5a4f50888b4f41aaad7c9bd844 /perl | |
parent | da85ed425dc828ef4b8817f64d448101a88507b5 (diff) | |
download | libguestfs-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.xs | 2994 | ||||
-rw-r--r-- | perl/bindtests.pl | 40 | ||||
-rw-r--r-- | perl/lib/Sys/Guestfs.pm | 1658 |
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 |