+PLEASE LOOK AT THE TOP OF EACH FILE BEFORE EDITING TO SEE WHETHER IT
+IS AUTOMATICALLY GENERATED OR NOT.
+
Adding a new action
----------------------------------------------------------------------
'do_action' function. Take a look at one of the numerous examples
there.
-You will need to run src/generator.ml (from the top directory) which
-regenerates all the auto-generated files, and then continue with the
-ordinary build process.
-
Formatting
----------------------------------------------------------------------
Please make sure that the code compiles without warnings.
-Please test any changes
+Please test any changes.
+
+Directories
+----------------------------------------------------------------------
+
+appliance/
+ The qemu appliance, build scripts and so on.
+
+cat/
+ The virt-cat tool.
+
+capitests/
+ Automated tests of the C API.
+
+contrib/
+ Outside contributions, experimental parts.
+
+daemon/
+ The daemon that runs inside the guest and carries out actions.
+
+df/
+ The virt-df tool.
+
+examples/
+ The examples.
+
+fish/
+ Guestfish (the command-line program / shell)
+
+haskell/
+ Haskell bindings.
+
+images/
+ Some guest images to test against. These are gzipped to save
+ space. You have to unzip them before use.
+
+ Also contains some files used by the test suite.
+
+inspector/
+ Virtual machine image inspector (virt-inspector).
+
+java/
+ Java bindings.
+
+m4/
+ M4 macros used by autoconf.
+
+ocaml/
+ OCaml bindings.
+
+po/
+ Translations.
+
+perl/
+ Perl bindings.
+
+python/
+ Python bindings.
+
+regressions/
+ Regression tests.
+
+ruby/
+ Ruby bindings.
+
+src/
+ Source code to the C library.
+ Also contains the crucial generator program.
+
+test-tool/
+ Interactive qemu/kernel test tool.
+
+v2v/
+ Xen to KVM (V2V) conversion tool.
Debugging
----------------------------------------------------------------------
-Use 'guestfish -v', which will show error messages etc from the
-daemon.
+It's a good idea to use guestfish to try out new commands.
+
+Debugging the daemon is a problem because it runs inside a minimal
+qemu environment. However you can print messages from the daemon, and
+they will show up if you use 'guestfish -v'.
Patches
----------------------------------------------------------------------
-Submit patches to the fedora-virt mailing list:
-http://www.redhat.com/mailman/listinfo/fedora-virt
+Submit patches to the mailing list:
+http://www.redhat.com/mailman/listinfo/libguestfs
and CC to rjones@redhat.com
+
+I18N
+----------------------------------------------------------------------
+
+We support i18n (gettext anyhow) in the library.
+
+However many messages come from the daemon, and we don't translate
+those at the moment. One reason is that the appliance generally has
+all locale files removed from it, because they take up a lot of space.
+So we'd have to readd some of those, as well as copying our PO files
+into the appliance.
+
+Debugging messages are never translated, since they are intended for
+the programmers.
+
+Extended printf
+----------------------------------------------------------------------
+
+In the daemon code we have created custom printf formatters %Q and %R,
+which are used to do shell quoting.
+
+%Q => Simple shell quoted string. Any spaces or other shell characters
+ are escaped for you.
+
+%R => Same as %Q except the string is treated as a path which is prefixed
+ by the sysroot.
+
+eg.
+
+asprintf (&cmd, "cat %R", path);
+==> "cat /sysroot/some\ path\ with\ spaces"
+
+Note: Do NOT use these when you are passing parameters to the
+command{,r,v,rv}() functions. These parameters do NOT need to be
+quoted because they are not passed via the shell (instead, straight to
+exec). You probably want to use the sysroot_path() function however.