The discussion about coding style on the net-snmp-coders mailing list
can be found at the following web address:

  http://sourceforge.net/mailarchive/message.php?msg_id=1009885
  (Thread "design proposal - coding style" started on 2001-02-08)

----------------------------------------------------------------------
Indentation: 

We've adopted the following indent style:

   indent -orig -nbc -bap -nut -nfca -T netsnmp_mib_handler -T netsnmp_handler_registration -T netsnmp_handler_args -T netsnmp_delegated_cache -T netsnmp_baby_steps_modes -T netsnmp_baby_steps_access_methods -T netsnmp_mode_handler_list -T netsnmp_mib_handler_methods -T netsnmp_monitor_callback_header -T netsnmp_monitor_set_request_data -T netsnmp_monitor_callback_cooperative -T netsnmp_old_api_info -T netsnmp_old_api_cache -T netsnmp_row_merge_status -T netsnmp_scalar_group -T netsnmp_set_info -T netsnmp_request_info -T netsnmp_set_info -T netsnmp_tree_cache -T netsnmp_agent_request_info -T netsnmp_cachemap -T netsnmp_agent_session -T netsnmp_stash_cache_info -T netsnmp_stash_cache_data -T netsnmp_request_group_item -T netsnmp_request_group -T netsnmp_table_array_callbacks -T netsnmp_table_row -T netsnmp_table_data -T netsnmp_table_data_set_storage -T netsnmp_table_data_set -T netsnmp_column_info -T netsnmp_table_registration_info -T netsnmp_table_request_info -T netsnmp_iterator_info -T netsnmp_tdata_row -T netsnmp_tdata -T netsnmp_subtree -T netsnmp_watcher_info -T netsnmp_arp_entry -T netsnmp_interface_stats -T netsnmp_interface_entry -T netsnmp_conf_if_list -T netsnmp_ipaddress_entry -T netsnmp_ipstats -T netsnmp_route_entry -T netsnmp_systemstats_entry -T netsnmp_tcpconn_entry -T netsnmp_udp_endpoint_entry -T netsnmp_container -T netsnmp_iterator -T netsnmp_data_list -T netsnmp_data_list_saveinfo -T netsnmp_factory -T netsnmp_file -T netsnmp_oid_stash_node -T netsnmp_oid_stash_save_info -T netsnmp_pdu -T netsnmp_request_list -T netsnmp_vardata -T netsnmp_callback_pass -T netsnmp_callback_info -T netsnmp_token_descr -T netsnmp_std_data -T netsnmp_transport -T netsnmp_transport_list -T netsnmp_tdomain -T netsnmp_line_info -T netsnmp_line_process_info -T netsnmp_token_value_index

[wow, what an annoying list!  The above -T list can be (re)generated by
running:
  perl -n -e 'print "-T $1 " if (/}\s*(netsnmp_\w+)\s*;/);' */*.h
in the include/net-snmp directory]

If possible, please run all new code submitted to the project through
the above command.  However, if sending a patch, please do *not* send
a patch that reformats the entire file.  Just the new sections of code
should be in the above style to make it easier for us to dissect what
you did in your patch.

Briefly, here's a description of the style:

	Blank lines:
		after procedures
		not (forced) after blocks of declarations or block comments
		multiple declarations not split onto separate lines

	Comments:
		Block comments indented 4 spaces from surrounding code
		Start/End on separate lines
		Solid '*' on the left of block comments
		"One-line" comments start in column 33

	Bracing/Indent/etc:
		K&R-style bracing (including "cuddle-else")
		'case' statements in line with 'switch'
		No space between procedure name and opening parenthesis
		variable declarations lined up, and start in column 16
		Procedure return type on a separate line to the procedure name
		Four character basic and continuation line indent
                No tabs used in the file, always use 8 spaces instead.
		Continuation parameters lined up with opening parenthesis

----------------------------------------------------------------------
Function names and Variable names:

should_be_like_this and notLikeThis

New public functions and defines should ideally start with a netsnmp_
or NETSNMP_ prefix, respectively.

----------------------------------------------------------------------
Structures:

We have decided to typedef all structures into names using the
following convention:

typedef struct netsnmp_wombat_s {
  int something_cool;
} netsnmp_wombat;

The important things to note here are that the struct name ends in a
"_s", the typedef name doesn't end in "_t", and the typedef is not to a
pointer and everything begins with "netsnmp_".

