[GRASS-dev] GRASS 7 development started
Glynn Clements
glynn at gclements.plus.com
Thu Jul 31 12:57:29 EDT 2008
Markus Neteler wrote:
> >> do you have the ultimate "indent" line for me?
> >
> > indent -bad -bap -bbb -br -bli0 -bls -cli0 -ncs -fc1 -hnl -i4 \
> > -nbbo -nbc -nbfda -nbfde -ncdb -ncdw -nce -nfca -npcs -nprs \
> > -npsl -nsc -nsob -saf -sai -saw -sbi0 -ss -ts8 -ut
>
> I have done a test run locally and came across a problem:
>
> cd visualization/nviz/src
> indent -bad -bap -bbb -br -bli0 -bls -cli0 -ncs -fc1 -hnl -i4 \
> -nbbo -nbc -nbfda -nbfde -ncdb -ncdw -nce -nfca -npcs -nprs \
> -npsl -nsc -nsob -saf -sai -saw -sbi0 -ss -ts8 -ut togl_flythrough.c
>
> indent: togl_flythrough.c:609: Warning:old style assignment ambiguity
> in "=-". Assuming "= -"
These warnings are harmless. K&R C allowed "=-", "=+" etc as aliases
for "-=", "+=", etc. But I have never even heard of anyone
encountering this syntax in actual code, and certainly haven't seen it
myself. Also, it only works with K&R-style compilers; gcc doesn't even
have an option to support it.
> indent: togl_flythrough.c:956: Error:Unexpected end of file
This is caused by the "README" in the "#if 0 ..." block at the top of
the file. If you remove that block, the error goes away.
Even code which is disabled with "#if 0 ..." should at least parse as
C code. Otherwise, it tends to mess up formatting and syntax
highlighting in text editors (which usually just ignore preprocessor
directives).
> Additionally, there are:
>
> indent: ./lib/vector/dglib/misc-template.c:546: Error:Stmt nesting error.
> indent: ./lib/vector/dglib/misc-template.c:623: Error:Unmatched 'else'
> indent: ./lib/vector/dglib/misc-template.c:649: Error:Stmt nesting error.
That's caused by putting unmatched braces inside a #if. Again, this
tends not to work with tools which operate upon source code.
Note that misc-template.c isn't actually used.
> indent: ./swig/perl/grass_wrap.c:1064: Error:Stmt nesting error.
Again, unmatched braces inside #if. But:
1. That file shouldn't even be under version control, as it isn't a
source file (it's an intermediate file, generated by SWIG).
2. It shouldn't be indent-ed (or modified in any way, as it's
auto-generated).
3. It should arguably have a .cc extension as it contains C++ code.
> and several warnings like
> indent: ./lib/sites/sites.c:859: Warning:old style assignment
> ambiguity in "=-". Assuming "= -"
> and
> indent: ./lib/rst/interp_float/vinput2d.c:75: Warning:old style
> assignment ambiguity in "=*". Assuming "= *"
Harmless, see above.
> Analysing one of the 'Assuming "= -"' warnings, it turns out that:
> site->cattype=-1;
> is changed to
> site->cattype = -1;
> but it should be
> site->cattype =- 1;
No, it should be "site->cattype = -1;", as it's assigning negative
one, not decrementing.
This is sites/s.in.ascii/get_site.c:130, right? I'm quite
certain that it really should be assigning -1, not decrementing.
If was really supposed to be a decrement operation, it would need to
be either:
site->cattype -= 1;
or:
site->cattype--;
in order to work with existing compilers.
> Can we trap this? Otherwise we can run it locally and fix all warnings
> manually in SVN before running the global automated indenting.
You can verify that the indentation isn't changing the semantics of
the code by compiling everything[1] without -g and with -DNDEBUG,
before and after indenting, and comparing the .o files.
[1] If you want to be 100% certain, you will need use all of the
--with-<package> switches (which means installing all optional
dependencies), and on multiple platforms.
When I tried it on Linux with everything except MySQL, SQLite and
OpenDWG, I didn't find any mismatches. That probably accounts for 99%
of the code, so the chances are slim that there are any problems in
the fraction of the code which didn't get compiled.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list