I agree that a code rewrite would be nice, but would require way more free time than I have, and I'm not sure I'd trust the task to someone else. Making Radiance ANSI-C compatible, at least as far as adding function prototypes and the like, wouldn't be terribly difficult, and is probably a recommended first step to having others working on the code base. I only wish I were more familiar with what's in ANSI-C and what's not.

There are two reasons Radiance wasn't converted to ANSI-C long ago. First, some systems (Sun in particular) were distributed with a free K&R compiler, but you had to pay for the ANSI-C compiler, so many people couldn't have built Radiance if it were ANSI-C. Second, I had a bias against ANSI-C because I never ran into portability problems before its invention, but had nothing but trouble afterwards. From my perspective, ANSI-C was a giant step backwards in compatibility, with a subsequent explosion of header files and prototypes and subtle system differences. Before ANSI, I could hop onto virtually any machine and read the header files to know what was going on. After ANSI and the related attempts to "standardize" UNIX, I couldn't make sense of any of the headers anymore, since there were about a dozen #ifdef's in each one for all the various attempted compatibilities.

If I were to really rewrite Radiance, I would want to start from the ground up and take a different approach to many problems. The process might take years, and it's by no means certain that the final result would be any better than what we currently have. Furthermore, who would fund such a development effort? It was a brutal struggle to do it in the first place within all the budget constraints at LBNL, and what little money there was for research software development there and elsewhere in the U.S. has all but dried up.

I solved Len's compile problems by jumping onto his machine and making a few changes. Besides the sys_errlist definition, there were a couple of other things that were messed up due to the combination of GNU-C and Solaris. That's a good idea to use strerror(), though -- I'll put that into the next release. I embarrassed to say that I didn't know about it.