Subject First impressions
Author Jan Mikkelsen
I've spent a little bit of time looking through the source code. Here are
my first impressions:

- The build system is really bad. Was there an improved system which was
not released, or is this it?

- The #ifdef approach to multiplatform code needs to be altered
considerably. Splitting things into method specific files, with ifdefs by
feature, rather than by platform is probably going to help. Things like
really need to be fixed:

#ifndef RANDOM_PLATFORM_1
#ifndef RANDOM_PLATFORM_2
#ifndef RANDOM_PLATFORM_3
do something;
#endif
#endif
#endif

- There seems to be (unless I've missed something) a bootstrapping problem:
Just about everything (including gpre) seems to require files generated by
codes.e which needs gpre to compile.

- sprintf() seems to be used unsafely (ie: with buffers potentially too
small) in at least one place. I haven't gone looking for this kind of
thing, so I assume it happens regularly.

What's next:

Unless someone has already done it, I'm going to throw away the current
build system and create Makefiles for our in-house build system. Beyond
that, I think there will be cruft removal and cleanup before any more
functionality is added.

Jan Mikkelsen