blob: cb773beeae92d27a28eb7a20056d3458e9f9f0b3 [file] [log] [blame]
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_".