* Investigate "configure" (autoconf?) and how to use it to provide good definitions of things such as INT32. Look at how some other successful and tasteful programs do the same thing. [Under way, but incomplete. --jct] * The __attribute__ tags used to specify structure alignments are non-portable. Needs to be made portable. * The use of GNU getopt for processing of long arguments needs to be made portable, for the use of non-GNU unixes. Possibly this will mean just taking getopt.c and its kin out of the glibc library and distibuting them with ODS. Other packages do this for support on non-glibc systems like Solaris. [Update: I've taken getopt from an old version of libiberty; this is to "bootstrap" using GNU getopt. For the long term, we need to test for glibc in autoconf, and if it's available use it. If glibc is not available, then (and only then) build in the local copy of getopt. I'd do that now, but I don't understand autoconf well enough. --jct] * Consider using GNU gettext for internationalization. * Improve error handling throughout. We need a systematic way of passing errors back up to calling applications. We could use setjmp/ longjmp, but it would have to be user configurable. * Redefine the distinction between the library and the program; currently it is rather blurred.