X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=perl%2FGuestfs.xs;h=374a40d15858f702424ed7944eef45611a0f699d;hp=e95b2746276f0346bc48abde9feda140af4b746b;hb=85ed8cef99c19b4143844991d14e0b848fecc5da;hpb=672c4ba257924c3e64836c08fb3b55bc4a6b2aba diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs index e95b274..374a40d 100644 --- a/perl/Guestfs.xs +++ b/perl/Guestfs.xs @@ -68,7 +68,7 @@ XS_unpack_charPtrPtr (SV *arg) { croak ("array reference expected"); av = (AV *)SvRV (arg); - ret = malloc (av_len (av) + 1 + 1); + ret = malloc ((av_len (av) + 1 + 1) * sizeof (char *)); if (!ret) croak ("malloc failed"); @@ -219,6 +219,30 @@ PREINIT: 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; @@ -352,6 +376,16 @@ PREINIT: 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; @@ -1699,3 +1733,164 @@ PREINIT: 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)); +