X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=perl%2FGuestfs.xs;h=f19b9d09720e20772ad0a871dd9a856a4b4eaf25;hp=e498842d43061958b9e3d05379f0e194aa93604e;hb=e118c14b9552de311cbc1734e03a3226b484c1e8;hpb=bb07a7f858da5d07c57360e62c0ddfd24ce6be45 diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs index e498842..f19b9d0 100644 --- a/perl/Guestfs.xs +++ b/perl/Guestfs.xs @@ -64,12 +64,13 @@ XS_unpack_charPtrPtr (SV *arg) { AV *av; I32 i; - if (!arg || !SvOK (arg) || !SvROK (arg) || SvTYPE (SvRV (arg)) != SVt_PVAV) { + if (!arg || !SvOK (arg) || !SvROK (arg) || SvTYPE (SvRV (arg)) != SVt_PVAV) croak ("array reference expected"); - } av = (AV *)SvRV (arg); - ret = (char **)malloc (av_len (av) + 1 + 1); + ret = malloc (av_len (av) + 1 + 1); + if (!ret) + croak ("malloc failed"); for (i = 0; i <= av_len (av); i++) { SV **elem = av_fetch (av, i, 0); @@ -168,6 +169,30 @@ PREINIT: 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; @@ -305,6 +330,26 @@ PREINIT: 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 mount (g, device, mountpoint) guestfs_h *g; char *device; @@ -1321,3 +1366,248 @@ PREINIT: 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)); +