Blame HACKING

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.