X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=HACKING;h=815ee16e8608a1b481bceaaed32ccf070671a217;hp=1c2b20c1ea01e87b6f6ebd6416b9c3a71d13cdcc;hb=8ae7e1057f43e9b79260cdf191f39d657fdf0293;hpb=7bf3e1a43512293b1a3f78f880b57e7bbd372eae diff --git a/HACKING b/HACKING index 1c2b20c..815ee16 100644 --- a/HACKING +++ b/HACKING @@ -14,10 +14,6 @@ etc. to the big list called 'functions' at the top of this file. '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 ---------------------------------------------------------------------- @@ -28,40 +24,101 @@ Please make sure that the code compiles without warnings. Please test any changes. +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: + + ;;; 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 indent-tabs-mode nil) ; indent using spaces, not TABs + (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. + +capitests/ + Automated tests of the C API. + +contrib/ + 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. examples/ - The examples. + The examples. fish/ - Guestfish (the command-line program / shell) + 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. + 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. + M4 macros used by autoconf. ocaml/ - OCaml bindings. + OCaml bindings. + +po/ + Translations. perl/ - Perl bindings. + Perl bindings. python/ - Python bindings. + Python bindings. + +regressions/ + 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. + +v2v/ + Xen to KVM (V2V) conversion tool. Debugging ---------------------------------------------------------------------- @@ -75,6 +132,42 @@ 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.