[Libvir] RFC: Add a short doc with libvirt coding style guidelines

Daniel P. Berrange berrange at redhat.com
Sun Jan 13 17:39:36 UTC 2008

There's a few coding style guidelines we've kind of informally agreed upon
wrt to libvirt patches, and perhaps more that we ought to make decisions on.
For the benefit of people sending patches I reckon its worth writing these
down. So I'm attaching a proposed doc 'HACKING' in which we can detail the
guidelines.  And yes, we don't uniformly comply with these guidelines in
all places....all the more reason to list them & fix cases where we don't
comply :-)

Thoughts.. ?

|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 
-------------- next part --------------
       Libvirt Hacking Guidelines

  1. Apply sizeof to the return variable, not the type.

     eg Instead of

        SomeType *foo;
        foo = malloc(sizeof(SomeType))


        SomeType *foo;

        foo = malloc(sizeof(*foo))

    So if foo's type is changed in future it avoids having
    to search for & fixup all malloc statements.

  2. Do not use conditionals in front of 'free'.

     eg Instead of

       if (foo) free(foo)



  3. Include "config.h" in all source files


         #include "config.h"

  4. Indent in 4 space units, without tabs

     eg Add this at end of every file for VIM & Emacs

        * vim: set tabstop=4:
        * vim: set shiftwidth=4:
        * vim: set expandtab:
        * Local variables:
        *  indent-tabs-mode: nil
        *  c-indent-level: 4
        *  c-basic-offset: 4
        *  tab-width: 4
        * End:

  5. Ensure any user visible strings are marked for translation

      eg wrap all strings with _(...)

        virXendError(xend, VIR_ERR_INTERNAL_ERROR,
                     _("domain information incomplete, missing domid"));

More information about the libvir-list mailing list