+SV *
+wc_l (g, path)
+ guestfs_h *g;
+ char *path;
+PREINIT:
+ int lines;
+ CODE:
+ lines = guestfs_wc_l (g, path);
+ if (lines == -1)
+ croak ("wc_l: %s", guestfs_last_error (g));
+ RETVAL = newSViv (lines);
+ OUTPUT:
+ RETVAL
+
+SV *
+wc_w (g, path)
+ guestfs_h *g;
+ char *path;
+PREINIT:
+ int words;
+ CODE:
+ words = guestfs_wc_w (g, path);
+ if (words == -1)
+ croak ("wc_w: %s", guestfs_last_error (g));
+ RETVAL = newSViv (words);
+ OUTPUT:
+ RETVAL
+
+SV *
+wc_c (g, path)
+ guestfs_h *g;
+ char *path;
+PREINIT:
+ int chars;
+ CODE:
+ chars = guestfs_wc_c (g, path);
+ if (chars == -1)
+ croak ("wc_c: %s", guestfs_last_error (g));
+ RETVAL = newSViv (chars);
+ OUTPUT:
+ RETVAL
+
+void
+head (g, path)
+ guestfs_h *g;
+ char *path;
+PREINIT:
+ char **lines;
+ int i, n;
+ PPCODE:
+ lines = guestfs_head (g, path);
+ if (lines == NULL)
+ croak ("head: %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
+head_n (g, nrlines, path)
+ guestfs_h *g;
+ int nrlines;
+ char *path;
+PREINIT:
+ char **lines;
+ int i, n;
+ PPCODE:
+ lines = guestfs_head_n (g, nrlines, path);
+ if (lines == NULL)
+ croak ("head_n: %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
+tail (g, path)
+ guestfs_h *g;
+ char *path;
+PREINIT:
+ char **lines;
+ int i, n;
+ PPCODE:
+ lines = guestfs_tail (g, path);
+ if (lines == NULL)
+ croak ("tail: %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
+tail_n (g, nrlines, path)
+ guestfs_h *g;
+ int nrlines;
+ char *path;
+PREINIT:
+ char **lines;
+ int i, n;
+ PPCODE:
+ lines = guestfs_tail_n (g, nrlines, path);
+ if (lines == NULL)
+ croak ("tail_n: %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);
+