=head1 SYNOPSIS
#include <guestfs.h>
-
+
guestfs_h *handle = guestfs_create ();
guestfs_add_drive (handle, "guest.img");
guestfs_launch (handle);
libguestfs-using programs looks like this:
guestfs_h *handle = guestfs_create ();
-
+
/* Call guestfs_add_drive additional times if there are
* multiple disk images.
*/
guestfs_add_drive (handle, "guest.img");
-
+
/* Most manipulation calls won't work until you've launched
* the handle. You have to do this _after_ adding drives
* and _before_ other commands.
*/
guestfs_launch (handle);
-
+
/* Now you can examine what partitions, LVs etc are available.
*/
char **partitions = guestfs_list_partitions (handle);
char **logvols = guestfs_lvs (handle);
-
+
/* To access a filesystem in the image, you must mount it.
*/
guestfs_mount (handle, "/dev/sda1", "/");
-
- /* Now you can perform filesystem actions on the guest disk image. */
+
+ /* Now you can perform filesystem actions on the guest
+ * disk image.
+ */
guestfs_touch (handle, "/hello");
-
+
/* You only need to call guestfs_sync if you have made
* changes to the guest image.
*/
guestfs_sync (handle);
-
+
/* Close the handle. */
guestfs_close (handle);
image.
For small, single files, use C<guestfs_write_file>. This call
-currently contains a bug which limited the call to plain text files
+currently contains a bug which limits the call to plain text files
(not containing ASCII NUL characters).
To upload a single file, use C<guestfs_upload>. This call has no
programs L<hivexml(1)>, L<hivexget(1)> and L<virt-win-reg(1)> for more
help on this issue.
+=head2 USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES
+
+Although we don't want to discourage you from using the C API, we will
+mention here that the same API is also available in other languages.
+
+The API is broadly identical in all supported languages. As an
+example, in Python the handle itself is replaced by an object, but we
+don't try to "object orientify" any other parts of the API.
+
+=over 4
+
+=item B<C++>
+
+You can use the I<guestfs.h> header file from C++ programs. The C++
+API is identical to the C API.
+
+=item B<Haskell>
+
+This is the only language binding that is incomplete. Only calls
+which return simple integers have been bound in Haskell, and we are
+looking for help to complete this binding.
+
+=item B<Java>
+
+Full documentation is contained in the Javadoc which is distributed
+with libguestfs.
+
+=item B<OCaml>
+
+For documentation see the file C<guestfs.mli>.
+
+=item B<Perl>
+
+For documentation see L<Sys::Guestfs(3)>.
+
+=item B<Python>
+
+For documentation do:
+
+ $ python
+ >>> import guestfs
+ >>> help (guestfs)
+
+=item B<Ruby>
+
+Use the Guestfs module. There is no Ruby-specific documentation, but
+you can find examples written in Ruby in the libguestfs source.
+
+=item B<shell scripts>
+
+For documentation see L<guestfish(1)>.
+
+=back
+
=head1 CONNECTION MANAGEMENT
=head2 guestfs_h *