Daniel P. Berrange wrote:
On Fri, Jun 15, 2007 at 09:06:55AM +0100, Richard W.M. Jones wrote:Daniel P. Berrange wrote:On Thu, Jun 14, 2007 at 05:26:39PM -0400, Mark Johnson wrote:This patch has the includes need to build on Solaris. I've been using ifdef linux & ifndef linux to distinguish between solaris and linux at this point.Looks ok aside from[..]No, I don't agree. We should use configure.in to test for the presence of header files and then do things like:#ifdef HAVE_STRINGS_H #include <strings.h> #endifFor strings.h I don't see the point in making it conditional really, unless we're going to do the same for every single other header we include. The strings.h header is always present on Linux. In recent times stuff that waspreviously in strings.h has moved to string.h, but they're still in the original header too. So we should always include both string.h & strings.h for maximum portability.
<string.h> is in ISO C, but <strings.h> is not. So as Daniel Veillard said you can include the former without checks, but the latter should be defended with an #ifdef HAVE_STRINGS_H.
On BSD, <strings.h> has the legacy functions like bcopy and index. Are we using those? Shouldn't we instead replace any instances with memcpy / memmove / strchr / strrchr?
There are apparently some platforms where you can't include both ... urrgh: http://gcc.gnu.org/ml/gcc-patches/1998-08/msg00317.html
Rich. -- Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 03798903
Description: S/MIME Cryptographic Signature