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
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,
(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,
This function returns 0 on success or -1 on error.
+=head2 guestfs_cp
+
+ int guestfs_cp (guestfs_h *handle,
+ const char *src,
+ const char *dest);
+
+This copies a file from C<src> to C<dest> where C<dest> is
+either a destination filename or destination directory.
+
+This function returns 0 on success or -1 on error.
+
+=head2 guestfs_cp_a
+
+ int guestfs_cp_a (guestfs_h *handle,
+ const char *src,
+ const char *dest);
+
+This copies a file or directory from C<src> to C<dest>
+recursively using the C<cp -a> command.
+
+This function returns 0 on success or -1 on error.
+
=head2 guestfs_debug
char *guestfs_debug (guestfs_h *handle,
This function returns a string, or NULL on error.
I<The caller must free the returned string after use>.
+=head2 guestfs_dmesg
+
+ char *guestfs_dmesg (guestfs_h *handle);
+
+This returns the kernel messages (C<dmesg> output) from
+the guest kernel. This is sometimes useful for extended
+debugging of problems.
+
+Another way to get the same information is to enable
+verbose messages with C<guestfs_set_verbose> or by setting
+the environment variable C<LIBGUESTFS_DEBUG=1> before
+running the program.
+
+This function returns a string, or NULL on error.
+I<The caller must free the returned string after use>.
+
=head2 guestfs_download
int guestfs_download (guestfs_h *handle,
This function returns 0 on success or -1 on error.
+=head2 guestfs_drop_caches
+
+ int guestfs_drop_caches (guestfs_h *handle,
+ int whattodrop);
+
+This instructs the guest kernel to drop its page cache,
+and/or dentries and inode caches. The parameter C<whattodrop>
+tells the kernel what precisely to drop, see
+L<http://linux-mm.org/Drop_Caches>
+
+Setting C<whattodrop> to 3 should drop everything.
+
+This automatically calls L<sync(2)> before the operation,
+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,
should have filesystem type C<fstype>.
The returned integer is the status. See L<fsck(8)> for the
-list of status codes from C<fsck>, and note that multiple
-status codes can be summed together.
+list of status codes from C<fsck>.
-It is entirely equivalent to running C<fsck -a -t fstype device>.
-Note that checking or repairing NTFS volumes is not supported
+Notes:
+
+=over 4
+
+=item *
+
+Multiple status codes can be summed together.
+
+=item *
+
+A non-zero return code can mean "success", for example if
+errors have been corrected on the filesystem.
+
+=item *
+
+Checking or repairing NTFS volumes is not supported
(by linux-ntfs).
+=back
+
+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);
This function returns a C truth value on success or -1 on error.
+=head2 guestfs_grub_install
+
+ int guestfs_grub_install (guestfs_h *handle,
+ const char *root,
+ const char *device);
+
+This command installs GRUB (the Grand Unified Bootloader) on
+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);
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.
(like L<environ(3)>), or NULL if there was an error.
I<The caller must free the strings and the array after use>.
+=head2 guestfs_mv
+
+ int guestfs_mv (guestfs_h *handle,
+ const char *src,
+ const char *dest);
+
+This moves a file from C<src> to C<dest> where C<dest> is
+either a destination filename or destination directory.
+
+This function returns 0 on success or -1 on error.
+
+=head2 guestfs_ping_daemon
+
+ int guestfs_ping_daemon (guestfs_h *handle);
+
+This is a test probe into the guestfs daemon running inside
+the qemu subprocess. Calling this function checks that the
+daemon responds to the ping message, without affecting the daemon
+or attached block device(s) in any other way.
+
+This function returns 0 on success or -1 on error.
+
=head2 guestfs_pvcreate
int guestfs_pvcreate (guestfs_h *handle,
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,
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.
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.
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);
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