
From: Martin Bonner
I don't think Autoconfig /does/ help.
I'm using autoconfig in order to check if some OS features are available. Autoconfigure gives you the os name, version and relase. It is a great help for multiplatform development! For instance I test with autoconfigure if a given platform supports MSG_NOSIGNAL flag in the system call sendmsg. What ??? said (I have
forgotten their name, and you didn't attribute the quote), is that people build on Solaris 10 (which has strerror_r) and then expect to be able to run on Solaris 2 (which doesn't).
On HP/UX for instance the patch level of the system is also important. So only on teyting for os version/relase is not sufficient.
It seems to me that the only possible solution to that, is a define which forces the use of strerror. We don't want to use strerror unless we have to (because of thread safety), and the person building the code is the only person who can know whether they need the capability to deploy on Solaris 2.
With aoutconfig the build process can check if strerror_r is avaliable and provide strerror as fall back.
Hmm. Maybe boost should use strerror_r always, and then tell people how to write their own version if the OS doesn't provide it. (Grab a lock, call strerror, copy result to passed in buffer, release lock - absolutely safe against multithreaded calls to strerror_r, and there's a good chance that other calls to strerror will work)
Bad idea. Oliver