
From: Vladimir Prus
From: Martin Bonner
From: Oliver.Kowalke@qimonda.com
With autoconfig the build process can check if strerror_r is avaliable and provide strerror as fall back.
Autoconfig can check if strerror_r is available ON THE BUILD MACHINE. It CANNOT tell whether it will be available on the target machines.
It is you fault if you distribute a software to an platform for which it wasn't build. If build and target machine have the same os version and release then the system calls should be the same.
And why do you think that build and target machine should have the same os version and release?
Because some system calls differ between the OS's and/or between releases. In this case the problem was that strerror_r is avaliable on LINUX and on Solaris 2.8 not. But Solaris 2.8 (and even HP/UX 11.11) provide an threadsafe strerror function. If I think on the BSD socket library - differences in the function flags and the behaviour Are common (even between releases).
It's quite reasonable to build things on operating system X version N and have it run on operating system Y version M. Compiler running on Linux and producing binaries for Windows is a common beast.
I think this is not true: UNIX : socket(). WIN: WSASocket()