diff options
author | Richard Jones <rjones@trick.home.annexia.org> | 2009-05-19 12:05:43 +0100 |
---|---|---|
committer | Richard Jones <rjones@trick.home.annexia.org> | 2009-05-19 12:05:43 +0100 |
commit | 1fc41b39dac877ccec1284da8bb14baa4df368b8 (patch) | |
tree | 74d0693b6d97d796b75847ace4815109c17b3198 /perl | |
parent | d1df2f342489bbbba086cae2bb95971c8e404cad (diff) | |
download | libguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.tar.gz libguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.tar.xz libguestfs-1fc41b39dac877ccec1284da8bb14baa4df368b8.zip |
Generated code for 'find' command.
Diffstat (limited to 'perl')
-rw-r--r-- | perl/Guestfs.xs | 19 | ||||
-rw-r--r-- | perl/lib/Sys/Guestfs.pm | 27 |
2 files changed, 46 insertions, 0 deletions
diff --git a/perl/Guestfs.xs b/perl/Guestfs.xs index 5a6cf364..0cc124ce 100644 --- a/perl/Guestfs.xs +++ b/perl/Guestfs.xs @@ -1917,3 +1917,22 @@ PREINIT: if (r == -1) croak ("resize2fs: %s", guestfs_last_error (g)); +void +find (g, directory) + guestfs_h *g; + char *directory; +PREINIT: + char **names; + int i, n; + PPCODE: + names = guestfs_find (g, directory); + if (names == NULL) + croak ("find: %s", guestfs_last_error (g)); + for (n = 0; names[n] != NULL; ++n) /**/; + EXTEND (SP, n); + for (i = 0; i < n; ++i) { + PUSHs (sv_2mortal (newSVpv (names[i], 0))); + free (names[i]); + } + free (names); + diff --git a/perl/lib/Sys/Guestfs.pm b/perl/lib/Sys/Guestfs.pm index 62f3e7b0..e7f89248 100644 --- a/perl/lib/Sys/Guestfs.pm +++ b/perl/lib/Sys/Guestfs.pm @@ -531,6 +531,33 @@ The exact command which runs is C<file -bsL path>. Note in particular that the filename is not prepended to the output (the C<-b> option). +=item @names = $h->find ($directory); + +This command lists out all files and directories, recursively, +starting at C<directory>. It is essentially equivalent to +running the shell command C<find directory -print> but some +post-processing happens on the output, described below. + +This returns a list of strings I<without any prefix>. Thus +if the directory structure was: + + /tmp/a + /tmp/b + /tmp/c/d + +then the returned list from C<$h-E<gt>find> C</tmp> would be +4 elements: + + a + b + c + c/d + +If C<directory> is not a directory, then this command returns +an error. + +The returned list is sorted. + =item $status = $h->fsck ($fstype, $device); This runs the filesystem checker (fsck) on C<device> which |