X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=perl%2FGuestfs.xs;h=99eb3190204d6288752d75dcaf765082072ee588;hb=c989e8832df70b4cb8200ba8d5622048e560f1f7;hp=fd287e7beeff98d1c3bf7e8e4ac7220ad1fd53d3;hpb=94050e0344685b6916e21581e618ad3e85795008;p=libguestfs.git diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs index fd287e7..99eb319 100644 --- a/perl/Guestfs.xs +++ b/perl/Guestfs.xs @@ -466,3 +466,160 @@ PREINIT: } 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", last_error); + 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; + PPCODE: + if (guestfs_aug_init (g, root, flags) == -1) + croak ("aug_init: %s", last_error); + +void +aug_close (g) + guestfs_h *g; + PPCODE: + if (guestfs_aug_close (g) == -1) + croak ("aug_close: %s", last_error); + +SV * +aug_defvar (g, name, expr) + guestfs_h *g; + char *name; + char *expr; +PREINIT: + int nrnodes; + CODE: + nrnodes = guestfs_aug_defvar (g, name, expr); + if (nrnodes == -1) + croak ("aug_defvar: %s", last_error); + 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", last_error); + 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", last_error); + RETVAL = newSVpv (val, 0); + free (val); + OUTPUT: + RETVAL + +void +aug_set (g, path, val) + guestfs_h *g; + char *path; + char *val; + PPCODE: + if (guestfs_aug_set (g, path, val) == -1) + croak ("aug_set: %s", last_error); + +void +aug_insert (g, path, label, before) + guestfs_h *g; + char *path; + char *label; + int before; + PPCODE: + if (guestfs_aug_insert (g, path, label, before) == -1) + croak ("aug_insert: %s", last_error); + +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", last_error); + RETVAL = newSViv (nrnodes); + OUTPUT: + RETVAL + +void +aug_mv (g, src, dest) + guestfs_h *g; + char *src; + char *dest; + PPCODE: + if (guestfs_aug_mv (g, src, dest) == -1) + croak ("aug_mv: %s", last_error); + +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", last_error); + 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; + PPCODE: + if (guestfs_aug_save (g) == -1) + croak ("aug_save: %s", last_error); + +void +aug_load (g) + guestfs_h *g; + PPCODE: + if (guestfs_aug_load (g) == -1) + croak ("aug_load: %s", last_error); +