|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
HACKING GCR and GCK libraries
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
BUILD OPTIONS
|
|
Packit |
b00eeb |
---------------
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Build options for developers:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
--enable-strict: Build with -Werror, disable deprecations, and fatal warnings
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
--enable-debug: Turn off compiler optimization
|
|
Packit |
b00eeb |
--disable-debug: Turn off all debug options and output.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
--enable-coverage: Build coverage, use 'make coverage' for summary.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
PATCHES
|
|
Packit |
b00eeb |
----------
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Patches should be submitted to bugzilla:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-keyring&component=gcr
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
The gnome-keyring mailing list is:
|
|
Packit |
b00eeb |
gnome-keyring-list@gnome.org
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
egg
|
|
Packit |
b00eeb |
Various bits of code shared with other modules
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gck
|
|
Packit |
b00eeb |
A public library for accessing PKCS#11 modules.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
gcr
|
|
Packit |
b00eeb |
A public library for bits of crypto UI and parsing etc...
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
schema
|
|
Packit |
b00eeb |
Desktop settings schemas for crypto stuff
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
testing
|
|
Packit |
b00eeb |
Testing CA, gnupg and other mock setups
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
----------------------------------------------------------------------------------
|
|
Packit |
b00eeb |
CODING STYLE
|
|
Packit |
b00eeb |
----------------------------------------------------------------------------------
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Our coding style is very similar to the linux coding style:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
http://lxr.linux.no/linux/Documentation/CodingStyle
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Summary below. Differences from Linux coding style are marked with a plus
|
|
Packit |
b00eeb |
instead of an asterisk:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
+ Space between function name and parentheses.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
my_function_call (arg1, arg2);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Braces on the same line as conditional with spaces around braces:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (test) {
|
|
Packit |
b00eeb |
do_y ();
|
|
Packit |
b00eeb |
do_z ();
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
switch (value) {
|
|
Packit |
b00eeb |
case CONSTANT:
|
|
Packit |
b00eeb |
do_z ();
|
|
Packit |
b00eeb |
break;
|
|
Packit |
b00eeb |
default:
|
|
Packit |
b00eeb |
break;
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Braces around functions on a separate line from function name,
|
|
Packit |
b00eeb |
return value on a separate line, arguments on separate lines.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static void
|
|
Packit |
b00eeb |
my_special_function (int arg1,
|
|
Packit |
b00eeb |
int arg2)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
/* body of function */
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Don't use braces unnecessarily:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (test)
|
|
Packit |
b00eeb |
do_this_thing ();
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* But use braces here, when one section has more than a line:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
if (test) {
|
|
Packit |
b00eeb |
do_this_thing ();
|
|
Packit |
b00eeb |
} else {
|
|
Packit |
b00eeb |
do_other_thing ();
|
|
Packit |
b00eeb |
smile_nicely ();
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Use of tabs for 8 char indent.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
------->if (test) {
|
|
Packit |
b00eeb |
------->------->Value;
|
|
Packit |
b00eeb |
------->------->Value;
|
|
Packit |
b00eeb |
------->}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* No trailing whitespace on lines. Git will warn you about this.
|
|
Packit |
b00eeb |
Please enforce it like so (in gnome-keyring checkout):
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
$ cp -ipv .git/hooks/pre-commit.sample .git/hooks/pre-commit
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* The '*' in a pointer declaraction belongs with the variable name:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
char *name;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
+ Extra long wrapped lines should wrap to function opening brace
|
|
Packit |
b00eeb |
using spaces past indentation point.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
------>my_function_call ("this is a very long argument here",
|
|
Packit |
b00eeb |
------> "wrapped argument is indented with spaces");
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Function names are in lower case with _ separators.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
this_is_a_long_function_name ();
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Constants are all in upper case with _ separators.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
THIS_IS_A_CONSTANT
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
+ Structures should be typedefed to avoid saying 'struct' and names
|
|
Packit |
b00eeb |
are CamelCase:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
ThisIsAStruct
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* One line comments should look like:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
/* This is a one line comment */
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
* Multi line comments should look like:
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
/*
|
|
Packit |
b00eeb |
* This is a multiline comment.
|
|
Packit |
b00eeb |
* And it has a useless second line.
|
|
Packit |
b00eeb |
*/
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
When in doubt adapt to the style of the code around your patch.
|