I just debugged a failure of the m4 master branch testsuite on Solaris 8, and tracked it to the fact that system(2) was using /bin/sh as its shell. The Solaris documentation claims that defining _POSIX_SOURCE prior to including any system headers will make system(2) use /bin/ksh instead, which should resolve the situation. But in my (limited) testing, I wasn't able to get that to happen with either gcc 3.3 or /usr/ucb/cc as the compiler and -D_POSIX_SOURCE=1 on the command line. Any ideas on how to select the standards-compliant system (2) implementation on Solaris? And should m4/extensions.m4 blindly define _POSIX_SOURCE for Solaris, like it already does for Minix, so as to favor the standard-compliant implementation of functions like system(2) that are documented to behave differently depending on compilation environment?
-- Eric Blake