[Gluster-devel] Re: GlusterFS warning fixes!
Anand Babu
ab at zresearch.com
Sat Sep 9 12:30:46 UTC 2006
On Sat, Sep 09, 2006 at 12:26:01PM -0700, Amar S. Tumballi wrote:
,----
| Harsha,
| Thanks. I applied those changes and removed other warnings too. Btw,
| now on start working on other archive 'gluster--fs--1.0'
`----
We have already moved to gluster--fs--2.0. Please port your changes to
2.0 branch. I should find a way to freeze commits to 1.0 branch.
Before we add any more new features, we should take care of the
following:
* All input arguments should be checked for validity
* Always try avoiding void return types. Return -1 for error and 0
for success with appropriate errno setting. For pointer return types,
return NULL for error.
* Invalid input args should have EINVAL errno.
* When ever you return with error, logging with gf_log is must.
* All global functions and variables should be prefixed with gf_ or
declared static otherwise. Otherwise we are polluting the name
space. This is not only important in libraries, but also general
code. Because external libraries may clash with our names.
* Use gcc-4.1 and treat all warnings as errors.
* Use format macros from stdint.h to ensure portability between 32bit
and 64bit platforms.
* Try avoiding functions returning allocated buffer. Instead take a
pointer to pre-allocated buffer. You can introduce functions that
calculates buffer length. This way, we can use alloca in place of
malloc.
* All dynamically allocated memory pointers should be followed by
length variable in all function arguments. And you should check for
appropriate size before you use the buffer. Otherwise it may lead to
memory corruption. Use snprintf in place of sprintf and alike calls.
Use memcpy or strncpy in place of strcpy.
* dict should have iteration function. dict is more effective than
linked list in many of our cases.
* Write comments if your code is not readable enough.
* Avoid global variables and take them as part of function
arguments. If there are lot of such states, group them under a struct.
* It is better to have readable long names than short cryptic acronyms
in naming variables and functions.
* As a convention, always arrange input arguments before output
arguments in functions.
You can also find the same under
http://gluster.org/docs/index.php/GlusterFS_Hackers_Guide#Coding_Guidelines
--
Anand Babu
GPG Key ID: 0x62E15A31
Blog [http://ab.freeshell.org]
The GNU Operating System [http://www.gnu.org]
Z RESEARCH [http://www.zresearch.com]
A Supercomputing Company.
More information about the Gluster-devel
mailing list