Add support for zerofree command.
[libguestfs.git] / guestfs-actions.pod
index 9d094c9..109c73e 100644 (file)
@@ -479,6 +479,13 @@ The first element is the name of the program to run.
 Subsequent elements are parameters.  The list must be
 non-empty (ie. must contain a program name).
 
+The return value is anything printed to I<stdout> by
+the command.
+
+If the command returns a non-zero exit status, then
+this function returns an error message.  The error message
+string is the content of I<stderr> from the command.
+
 The C<$PATH> environment variable will contain at least
 C</usr/bin> and C</bin>.  If you require a program from
 another location, you should provide the full path in the
@@ -493,6 +500,10 @@ locations.
 This function returns a string, or NULL on error.
 I<The caller must free the returned string after use>.
 
+Because of the message protocol, there is a transfer limit 
+of somewhere between 2MB and 4MB.  To transfer large files you should use
+FTP.
+
 =head2 guestfs_command_lines
 
  char **guestfs_command_lines (guestfs_h *handle,
@@ -505,6 +516,10 @@ This function returns a NULL-terminated array of strings
 (like L<environ(3)>), or NULL if there was an error.
 I<The caller must free the strings and the array after use>.
 
+Because of the message protocol, there is a transfer limit 
+of somewhere between 2MB and 4MB.  To transfer large files you should use
+FTP.
+
 =head2 guestfs_config
 
  int guestfs_config (guestfs_h *handle,
@@ -609,6 +624,31 @@ so that the maximum guest memory is freed.
 
 This function returns 0 on success or -1 on error.
 
+=head2 guestfs_end_busy
+
+ int guestfs_end_busy (guestfs_h *handle);
+
+This sets the state to C<READY>, or if in C<CONFIG> then it leaves the
+state as is.  This is only used when implementing
+actions using the low-level API.
+
+For more information on states, see L<guestfs(3)>.
+
+This function returns 0 on success or -1 on error.
+
+=head2 guestfs_equal
+
+ int guestfs_equal (guestfs_h *handle,
+               const char *file1,
+               const char *file2);
+
+This compares the two files C<file1> and C<file2> and returns
+true if their content is exactly equal, or false otherwise.
+
+The external L<cmp(1)> program is used for the comparison.
+
+This function returns a C truth value on success or -1 on error.
+
 =head2 guestfs_exists
 
  int guestfs_exists (guestfs_h *handle,
@@ -673,6 +713,18 @@ This command is entirely equivalent to running C<fsck -a -t fstype device>.
 
 On error this function returns -1.
 
+=head2 guestfs_get_append
+
+ const char *guestfs_get_append (guestfs_h *handle);
+
+Return the additional kernel options which are added to the
+guest kernel command line.
+
+If C<NULL> then no options are added.
+
+This function returns a string, or NULL on error.
+The string is owned by the guest handle and must I<not> be freed.
+
 =head2 guestfs_get_autosync
 
  int guestfs_get_autosync (guestfs_h *handle);
@@ -757,6 +809,21 @@ C<device>, with the root directory being C<root>.
 
 This function returns 0 on success or -1 on error.
 
+=head2 guestfs_hexdump
+
+ char *guestfs_hexdump (guestfs_h *handle,
+               const char *path);
+
+This runs C<hexdump -C> on the given C<path>.  The result is
+the human-readable, canonical hex dump of the file.
+
+This function returns a string, or NULL on error.
+I<The caller must free the returned string after use>.
+
+Because of the message protocol, there is a transfer limit 
+of somewhere between 2MB and 4MB.  To transfer large files you should use
+FTP.
+
 =head2 guestfs_is_busy
 
  int guestfs_is_busy (guestfs_h *handle);
@@ -1013,7 +1080,7 @@ This function returns 0 on success or -1 on error.
                const char *device);
 
 This creates a filesystem on C<device> (usually a partition
-of LVM logical volume).  The filesystem type is C<fstype>, for
+or LVM logical volume).  The filesystem type is C<fstype>, for
 example C<ext3>.
 
 This function returns 0 on success or -1 on error.
@@ -1217,6 +1284,22 @@ Remove the single directory C<path>.
 
 This function returns 0 on success or -1 on error.
 
+=head2 guestfs_set_append
+
+ int guestfs_set_append (guestfs_h *handle,
+               const char *append);
+
+This function is used to add additional options to the
+guest kernel command line.
+
+The default is C<NULL> unless overridden by setting
+C<LIBGUESTFS_APPEND> environment variable.
+
+Setting C<append> to C<NULL> means I<no> additional options
+are passed (libguestfs always adds a few of its own).
+
+This function returns 0 on success or -1 on error.
+
 =head2 guestfs_set_autosync
 
  int guestfs_set_autosync (guestfs_h *handle,
@@ -1284,9 +1367,6 @@ Set the path that libguestfs searches for kernel and initrd.img.
 The default is C<$libdir/guestfs> unless overridden by setting
 C<LIBGUESTFS_PATH> environment variable.
 
-The string C<path> is stashed in the libguestfs handle, so the caller
-must make sure it remains valid for the lifetime of the handle.
-
 Setting C<path> to C<NULL> restores the default path.
 
 This function returns 0 on success or -1 on error.
@@ -1304,9 +1384,6 @@ configure script.
 You can also override this by setting the C<LIBGUESTFS_QEMU>
 environment variable.
 
-The string C<qemu> is stashed in the libguestfs handle, so the caller
-must make sure it remains valid for the lifetime of the handle.
-
 Setting C<qemu> to C<NULL> restores the default qemu binary.
 
 This function returns 0 on success or -1 on error.
@@ -1398,6 +1475,46 @@ This function returns a C<struct guestfs_statvfs *>
 or NULL if there was an error.
 I<The caller must call C<free> after use>.
 
+=head2 guestfs_strings
+
+ char **guestfs_strings (guestfs_h *handle,
+               const char *path);
+
+This runs the L<strings(1)> command on a file and returns
+the list of printable strings found.
+
+This function returns a NULL-terminated array of strings
+(like L<environ(3)>), or NULL if there was an error.
+I<The caller must free the strings and the array after use>.
+
+Because of the message protocol, there is a transfer limit 
+of somewhere between 2MB and 4MB.  To transfer large files you should use
+FTP.
+
+=head2 guestfs_strings_e
+
+ char **guestfs_strings_e (guestfs_h *handle,
+               const char *encoding,
+               const char *path);
+
+This is like the C<guestfs_strings> command, but allows you to
+specify the encoding.
+
+See the L<strings(1)> manpage for the full list of encodings.
+
+Commonly useful encodings are C<l> (lower case L) which will
+show strings inside Windows/x86 files.
+
+The returned strings are transcoded to UTF-8.
+
+This function returns a NULL-terminated array of strings
+(like L<environ(3)>), or NULL if there was an error.
+I<The caller must free the strings and the array after use>.
+
+Because of the message protocol, there is a transfer limit 
+of somewhere between 2MB and 4MB.  To transfer large files you should use
+FTP.
+
 =head2 guestfs_sync
 
  int guestfs_sync (guestfs_h *handle);
@@ -1606,6 +1723,11 @@ As a special case, if C<size> is C<0>
 then the length is calculated using C<strlen> (so in this case
 the content cannot contain embedded ASCII NULs).
 
+I<NB.> Owing to a bug, writing content containing ASCII NUL
+characters does I<not> work, even if the length is specified.
+We hope to resolve this bug in a future version.  In the meantime
+use C<guestfs_upload>.
+
 This function returns 0 on success or -1 on error.
 
 Because of the message protocol, there is a transfer limit 
@@ -1625,3 +1747,21 @@ any partition tables, filesystem superblocks and so on.
 
 This function returns 0 on success or -1 on error.
 
+=head2 guestfs_zerofree
+
+ int guestfs_zerofree (guestfs_h *handle,
+               const char *device);
+
+This runs the I<zerofree> program on C<device>.  This program
+claims to zero unused inodes and disk blocks on an ext2/3
+filesystem, thus making it possible to compress the filesystem
+more effectively.
+
+You should B<not> run this program if the filesystem is
+mounted.
+
+It is possible that using this program can damage the filesystem
+or data on the filesystem.
+
+This function returns 0 on success or -1 on error.
+