1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- Rules to migrate GRASS 5.0 modules into GRASS 5.7
- Date: 2003-09-11
- While implementing GRASS 5.7 a major cleanup of GRASS modules
- has to be done. The following rules shall help the programmer
- to migrate a 5.0 module into the 5.7 environment.
- 1. Add GPL statement
- 2. Programming details:
- o String buffer length:
- - to be identical for all modules
- o consistent return types. Situation in 5.0:
- The majority of functions return 0 on error and 1 on success, but there
- are many which return 0 on success and a negative value on failure.
- Proposal for 5.7? see below
- o Copying input parameters into a buffer, i.e.:
- strcpy (name, option.input->answer);
- strcpy (result, option.output->answer);
- is usually unnecessary. Furthermore, it's something which should be
- discouraged, due to the usual problems with fixed-size buffers.
- o Pre-formatting error/warning messages, e.g.:
- if (mapset == NULL)
- {
- char buf[200];
- sprintf (buf, "cell file [%s] not found", name);
- G_fatal_error (buf);
- }
- is unnecessary, as G_fatal_error() and G_warning() already do this,
- e.g.
- if (!mapset)
- G_fatal_error("cell file [%s] not found", name);
- o Ideally, all abnormal exits would be via G_fatal_error(), rather
- than calling exit() directly.
- o The value passed to exit() should be non-negative. exit(-1) is just
- a confusing way of writing exit(255).
- o C++ style comments are forbidden for portability reasons:
- use /* comment */ but NOT //comment
- 3. Style of file: We can reach pretty indenting through:
- indent -i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1 FILE.c
- This should be done before uploading.
- ... to be extended...
|