X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=perl%2FGuestfs.xs;h=9d8a49cfdd04e2554999330560f8907f27b01dc7;hp=fe2c81c9bb756f900e8e60edcaefa5cb4ee54d6e;hb=ab0397017cc26833c09946cca19d86b907822a94;hpb=79cdf81e2fb717ea4372a55170d16800cdbddf23 diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs index fe2c81c..9d8a49c 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); @@ -1468,3 +1469,107 @@ PREINIT: 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 +