X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=HACKING;h=a61de095172b17971f6944fdbabce0f7e27fddfa;hp=336fc7c667941e8a78e481f58810872f62e6c083;hb=4d8efdd4552874092263bf567701c3459b05a780;hpb=0f2e9c84e9ff1071260770930068642ecc8ac0d9 diff --git a/HACKING b/HACKING index 336fc7c..a61de09 100644 --- a/HACKING +++ b/HACKING @@ -24,78 +24,116 @@ Please make sure that the code compiles without warnings. 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. + The qemu appliance, build scripts and so on. cat/ - The virt-cat tool. + The virt-cat tool. 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. + The daemon that runs inside the guest and carries out actions. df/ - The virt-df tool. + The virt-df tool. examples/ - The examples. + The examples. fish/ - Guestfish (the command-line program / shell) + Guestfish (the command-line program / shell) haskell/ - Haskell bindings. + Haskell bindings. 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. perl/ - Perl bindings. + Perl bindings. python/ - Python bindings. + Python bindings. regressions/ - Regression tests. + Regression tests. ruby/ - Ruby bindings. + Ruby bindings. 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. + Interactive qemu/kernel test tool. v2v/ - Xen to KVM (V2V) conversion tool. + Xen to KVM (V2V) conversion tool. Debugging ----------------------------------------------------------------------