To set up your local environment, from the top level of the checkout run
./contrib/setup
This will create pre-commit hooks to fixup many code style issues before your code is submitted.
On some Linux distributions this will install all build dependencies needed to compile fwupd as well.
The coding style to respect in this project is very similar to most GLib projects. In particular, the following rules are largely adapted from the PackageKit Coding Style.
8-space tabs for indentation
Prefer lines of less than <= 80 columns
1-space between function name and braces (both calls and macro declarations)
If function signature/call fits in a single line, do not break it into multiple lines
Prefer descriptive names over abbreviations (unless well-known) and shortening of names. e.g device
not dev
Single statements inside if/else should not be enclosed by '{}'
Use comments to explain why something is being done, but also avoid over-documenting the obvious. Here is an example of useless comment:
// Fetch the document fetch_the_document ();
Comments should not start with a capital letter or end with a full stop and should be C-style, not C++-style, e.g. /* this */
not // this
Each object should go in a separate .c file and be named according to the class
Use g_autoptr() and g_autofree whenever possible, and avoid goto out
error handling
Failing methods should return FALSE with a suitable GError
set
Trailing whitespace is forbidden
Pointers should be checked for NULL explicitly, e.g. foo != NULL
not !foo