|  | @@ -5,10 +5,33 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  1. Coding conventions
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +1.0. Whitespace and C conformance
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Invoke "make check-spaces" from time to time, so it can tell you about
 | 
	
		
			
				|  |  | +  deviations from our C whitespace style.  Generally, we use:
 | 
	
		
			
				|  |  | +    - Unix-style line endings
 | 
	
		
			
				|  |  | +    - K&R-style indentation
 | 
	
		
			
				|  |  | +    - No space before newlines
 | 
	
		
			
				|  |  | +    - A blank line at the end of each file
 | 
	
		
			
				|  |  | +    - Never more than one blank line in a row
 | 
	
		
			
				|  |  | +    - Always spaces, never tabs
 | 
	
		
			
				|  |  | +    - A space between control keywords and their corresponding paren
 | 
	
		
			
				|  |  | +      "if (x)", "while (x)", and "switch (x)", never "if(x)", "while(x)", or
 | 
	
		
			
				|  |  | +      "switch(x)".
 | 
	
		
			
				|  |  | +    - A space between anything and an open brace.
 | 
	
		
			
				|  |  | +    - No space between a function name and an opening paren. "puts(x)", not
 | 
	
		
			
				|  |  | +      "puts (x)".
 | 
	
		
			
				|  |  | +    - Function declarations at the start of the line.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  We try hard to build without warnings everywhere.  In particular, if you're
 | 
	
		
			
				|  |  | +  using gcc, you should invoke the configure script with the option
 | 
	
		
			
				|  |  | +  "--enable-gcc-warnings".  This will give a bunch of extra warning flags to
 | 
	
		
			
				|  |  | +  the compiler, and help us find divergences from our preferred C style.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  1.1. Details
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  Use tor_malloc, tor_free, tor_snprintf, tor_strdup, and tor_gettimeofday
 | 
	
		
			
				|  |  | -  instead of their generic equivalents.  (They always succeed or exit.)
 | 
	
		
			
				|  |  | +  Use tor_malloc, tor_free, tor_strdup, and tor_gettimeofday instead of their
 | 
	
		
			
				|  |  | +  generic equivalents.  (They always succeed or exit.)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    You can get a full list of the compatibility functions that Tor provides
 | 
	
		
			
				|  |  |    by looking through src/common/util.h and src/common/compat.h.
 |