mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
* cfg.mk (disable_temporarily): Remove sc_TAB_in_indentation, to enable the "make syntax-check" that enforces this. * .x-sc_TAB_in_indentation: New file. Exceptions. * HACKING: Document the policy, with tips on how to conform.
174 lines
4.8 KiB
Plaintext
174 lines
4.8 KiB
Plaintext
PLEASE LOOK AT THE TOP OF EACH FILE BEFORE EDITING TO SEE WHETHER IT
|
|
IS AUTOMATICALLY GENERATED OR NOT.
|
|
|
|
Adding a new action
|
|
----------------------------------------------------------------------
|
|
|
|
All action functions are generated automatically, so there are only
|
|
two files you need to edit:
|
|
|
|
(1) src/generator.ml: Add your new action, parameters, description,
|
|
etc. to the big list called 'functions' at the top of this file.
|
|
|
|
(2) Edit/create a C file in daemon/ subdirectory which implements your
|
|
'do_action' function. Take a look at one of the numerous examples
|
|
there.
|
|
|
|
Formatting
|
|
----------------------------------------------------------------------
|
|
|
|
Try to use GNU / Emacs default formatting, following the convention
|
|
used elsewhere in the source.
|
|
|
|
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.
|
|
|
|
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
|
|
----------------------------------------------------------------------
|
|
|
|
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 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.
|