New API: inspect-get-hostname to return the hostname of the guest.
[libguestfs.git] / HACKING
diff --git a/HACKING b/HACKING
index 815ee16..42f0f3a 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -7,8 +7,8 @@ Adding a new action
 All action functions are generated automatically, so there are only
 two files you need to edit:
 
 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.
+(1) generator/generator_actions.ml: Add your new action, parameters,
+description, etc. to the big list 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
 
 (2) Edit/create a C file in daemon/ subdirectory which implements your
 'do_action' function.  Take a look at one of the numerous examples
@@ -24,6 +24,13 @@ Please make sure that the code compiles without warnings.
 
 Please test any changes.
 
 
 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
 Code indentation
 ----------------------------------------------------------------------
 Our C source code generally adheres to some basic code-formatting
@@ -35,17 +42,25 @@ 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:
 
 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")
   ;;; 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
     (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))))
+            '(lambda () (if (string-match "/libguestfs\\>" (buffer-file-name))
+                            (libguestfs-c-mode))))
 
 Directories
 ----------------------------------------------------------------------
 
 Directories
 ----------------------------------------------------------------------
@@ -53,30 +68,43 @@ Directories
 appliance/
         The qemu appliance, build scripts and so on.
 
 appliance/
         The qemu appliance, build scripts and so on.
 
-cat/
-        The virt-cat tool.
-
 capitests/
         Automated tests of the C API.
 
 capitests/
         Automated tests of the C API.
 
+cat/
+        The 'virt-cat' command and documentation.
+
 contrib/
         Outside contributions, experimental parts.
 
 contrib/
         Outside contributions, experimental parts.
 
+csharp/
+        Experimental C# bindings.
+
 daemon/
         The daemon that runs inside the guest and carries out actions.
 
 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)
 
 examples/
         The examples.
 
 fish/
         Guestfish (the command-line program / shell)
 
+fuse/
+        FUSE (userspace filesystem) built on top of libguestfs.
+
+generator/
+        The crucially important generator, used to automatically
+        generate large amounts of boilerplate C code for things like
+        RPC and bindings.
+
 haskell/
         Haskell bindings.
 
 haskell/
         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.
 images/
         Some guest images to test against.  These are gzipped to save
         space.  You have to unzip them before use.
@@ -95,8 +123,17 @@ m4/
 ocaml/
         OCaml bindings.
 
 ocaml/
         OCaml bindings.
 
+php/
+        PHP bindings.
+
 po/
 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/
         Perl bindings.
@@ -110,16 +147,15 @@ regressions/
 ruby/
         Ruby bindings.
 
 ruby/
         Ruby bindings.
 
+tools/
+        Command line tools like virt-df, virt-edit and more.
+
 src/
         Source code to the C library.
 src/
         Source code to the C library.
-        Also contains the crucial generator program.
 
 test-tool/
         Interactive qemu/kernel test tool.
 
 
 test-tool/
         Interactive qemu/kernel test tool.
 
-v2v/
-        Xen to KVM (V2V) conversion tool.
-
 Debugging
 ----------------------------------------------------------------------
 
 Debugging
 ----------------------------------------------------------------------