Please test any changes.
+Useful targets:
+ make syntax-check Checks the syntax of the C code.
+ make check Runs the test suite.
+
+Enable warnings, and fix any you find:
+ ./configure --enable-gcc-warnings
+
+Code indentation
+----------------------------------------------------------------------
+Our C source code generally adheres to some basic code-formatting
+conventions. The existing code base is not totally consistent on this
+front, but we do prefer that contributed code be formatted similarly.
+In short, use spaces-not-TABs for indentation, use 2 spaces for each
+indentation level, and other than that, follow the K&R style.
+
+If you use Emacs, add the following to one of one of your start-up files
+(e.g., ~/.emacs), to help ensure that you get indentation right:
+
+ ;;; In libguestfs, indent with spaces everywhere (not TABs).
+ ;;; Exceptions: Makefile and ChangeLog modes.
+ (add-hook 'find-file-hook
+ '(lambda () (if (and buffer-file-name
+ (string-match "/libguestfs\\>" (buffer-file-name))
+ (not (string-equal mode-name "Change Log"))
+ (not (string-equal mode-name "Makefile")))
+ (setq indent-tabs-mode nil))))
+
+ ;;; When editing C sources in libguestfs, use this style.
+ (defun libguestfs-c-mode ()
+ "C mode with adjusted defaults for use with libguestfs."
+ (interactive)
+ (c-set-style "K&R")
+ (setq c-indent-level 2)
+ (setq c-basic-offset 2))
+ (add-hook 'c-mode-hook
+ '(lambda () (if (string-match "/libguestfs\\>" (buffer-file-name))
+ (libguestfs-c-mode))))
+
Directories
----------------------------------------------------------------------
appliance/
- The qemu appliance, build scripts and so on.
-
-cat/
- The virt-cat tool.
+ The qemu appliance, build scripts and so on.
capitests/
- Automated tests of the C API.
+ Automated tests of the C API.
contrib/
- Outside contributions, experimental parts.
+ Outside contributions, experimental parts.
-daemon/
- The daemon that runs inside the guest and carries out actions.
+csharp/
+ Experimental C# bindings.
-df/
- The virt-df tool.
+daemon/
+ The daemon that runs inside the guest and carries out actions.
examples/
- The examples.
+ The examples.
fish/
- Guestfish (the command-line program / shell)
+ Guestfish (the command-line program / shell)
+
+fuse/
+ FUSE (userspace filesystem) built on top of libguestfs.
haskell/
- Haskell bindings.
+ Haskell bindings.
+
+hivex/ [removed in 1.0.85]
+ This used to contain the hivex library for reading and
+ writing Windows Registry binary hive files. This is now
+ available as a separate upstream project.
images/
- Some guest images to test against. These are gzipped to save
- space. You have to unzip them before use.
+ 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.
+ Also contains some files used by the test suite.
inspector/
- Virtual machine image inspector (virt-inspector).
+ Virtual machine image inspector (virt-inspector).
java/
- Java bindings.
+ Java bindings.
m4/
- M4 macros used by autoconf.
+ M4 macros used by autoconf.
ocaml/
- OCaml bindings.
+ OCaml bindings.
po/
- Translations.
+ Translations of simple gettext strings. For translations of
+ longer documents, see po-docs/.
+
+po-docs/
+ The build infrastructure and PO files for translations of
+ manpages and POD files. Eventually this will be combined
+ with the po/ directory, but that is rather complicated.
perl/
- Perl bindings.
+ Perl bindings.
python/
- Python bindings.
+ Python bindings.
regressions/
- Regression tests.
+ Regression tests.
ruby/
- Ruby bindings.
+ Ruby bindings.
+
+tools/
+ Command line tools like virt-cat, virt-df, virt-edit and more.
+ In versions <= 1.0.73 these were all in separate directories
+ like cat/, df/, edit/, but since then we moved them all into
+ one directory to simplify builds.
src/
- Source code to the C library.
- Also contains the crucial generator program.
+ 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.
+ Interactive qemu/kernel test tool.
Debugging
----------------------------------------------------------------------