Browse Source

Mention trunnel in CodingStandards; describe how in trunnel/README

Nick Mathewson 10 years ago
parent
commit
49ccb7e7b8
2 changed files with 32 additions and 6 deletions
  1. 20 5
      doc/HACKING/CodingStandards.txt
  2. 12 1
      src/trunnel/README

+ 20 - 5
doc/HACKING/CodingStandards.txt

@@ -122,20 +122,35 @@ using gcc, you should invoke the configure script with the option
 "--enable-gcc-warnings".  This will give a bunch of extra warning flags to
 "--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.
 the compiler, and help us find divergences from our preferred C style.
 
 
-Functions to use
-~~~~~~~~~~~~~~~~
+Functions to use; functions not to use.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
 We have some wrapper functions like tor_malloc, tor_free, tor_strdup, and
 We have some wrapper functions like tor_malloc, tor_free, tor_strdup, and
 tor_gettimeofday; use them instead of their generic equivalents.  (They
 tor_gettimeofday; use them instead of their generic equivalents.  (They
 always succeed or exit.)
 always succeed or exit.)
 
 
 You can get a full list of the compatibility functions that Tor provides by
 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.  You can see the
-available containers in src/common/containers.h.  You should probably
+looking through src/common/util*.h and src/common/compat*.h.  You can see the
+available containers in src/common/containers*.h.  You should probably
 familiarize yourself with these modules before you write too much code, or
 familiarize yourself with these modules before you write too much code, or
 else you'll wind up reinventing the wheel.
 else you'll wind up reinventing the wheel.
 
 
-Use 'INLINE' instead of 'inline', so that we work properly on Windows.
+Use 'INLINE' instead of 'inline' -- it's a vestige of an old hack to make
+sure that we worked on MSVC6.
+
+We don't use strcat or strcpy or sprintf of any of those notoriously broken
+old C functions.  Use strlcat, strlcpy, or tor_snprintf/tor_asprintf instead.
+
+Functions not to write
+~~~~~~~~~~~~~~~~~~~~~~
+
+Try to never hand-write new code to parse or generate binary
+formats. Instead, use trunnel if at all possible.  See
+    https://gitweb.torproject.org/trunnel.git/tree
+for more information about trunnel.
+
+For information on adding new trunnel code to Tor, see src/trunnel/README
+
 
 
 Calling and naming conventions
 Calling and naming conventions
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ 12 - 1
src/trunnel/README

@@ -1,10 +1,21 @@
 This directory contains code for use with, and code made by, the
 This directory contains code for use with, and code made by, the
 automatic code generation tool "Trunnel".
 automatic code generation tool "Trunnel".
 
 
+Trunnel generates binary parsers and formatters for simple data
+structures. It aims for human-readable, obviously-correct outputs over
+maximum efficiency or flexibility.
+
 The .trunnel files are the inputs here; the .c and .h files are the outputs.
 The .trunnel files are the inputs here; the .c and .h files are the outputs.
-To regenerate the .c and .h files, run "scripts/codegen/run_trunnel.sh".
+
+To add a new structure:
+   - Add a new .trunnel file or expand an existing one to describe the format
+     of the structure.
+   - Regenerate the .c and .h files.  To do this, you run
+     "scripts/codegen/run_trunnel.sh".  You'll need trunnel installed.
+   - Add the .trunnel, .c, and .h files to include.am
 
 
 For the Trunnel source code, and more documentation about using Trunnel,
 For the Trunnel source code, and more documentation about using Trunnel,
 see https://gitweb.torproject.org/trunnel.git , especially
 see https://gitweb.torproject.org/trunnel.git , especially
     https://gitweb.torproject.org/trunnel.git/tree/README
     https://gitweb.torproject.org/trunnel.git/tree/README
 and https://gitweb.torproject.org/trunnel.git/tree/doc/trunnel.md
 and https://gitweb.torproject.org/trunnel.git/tree/doc/trunnel.md
+