/* 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 #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 ((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 ((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 ((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 ((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 ((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 ((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 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 ((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 ((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 ((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, n, cyls, heads, sectors, line) guestfs_h *g; char *device; int n; int cyls; int heads; int sectors; char *line; PREINIT: int r; PPCODE: r = guestfs_sfdisk_N (g, device, n, 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));