changeset 6318:5ba7d493bd0d

2005-10-01 Simon Josefsson <jas@extundo.com> * getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h. Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO. Protect AI_* and EAI_* definitions. Protect function declarations.
author Simon Josefsson <simon@josefsson.org>
date Sat, 01 Oct 2005 10:27:20 +0000
parents 453f5e0bb3bf
children 81f384f9b845
files lib/ChangeLog lib/getaddrinfo.h
diffstat 2 files changed, 59 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-01  Simon Josefsson  <jas@extundo.com>
+
+	* getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h.
+	Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO.  Protect
+	AI_* and EAI_* definitions.  Protect function declarations.
+
 2005-09-29  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* xtime.h (XTIME_PRECISION): Now of type int, not long long int,
--- a/lib/getaddrinfo.h
+++ b/lib/getaddrinfo.h
@@ -19,13 +19,21 @@
 #ifndef GETADDRINFO_H
 # define GETADDRINFO_H
 
-/* Get getaddrinfo declarations, if available.  Also get 'socklen_t',
-   and 'struct sockaddr' via sys/types.h which are used below. */
-# include <sys/types.h>
-# include <sys/socket.h>
-# include <netdb.h>
+/* Get all getaddrinfo related declarations, if available.  */
+# ifdef HAVE_SYS_SOCKET_H
+#  include <sys/socket.h>
+# endif
+# ifdef HAVE_NETDB_H
+#  include <netdb.h>
+# endif
 
-# if !HAVE_GETADDRINFO
+# ifndef HAVE_STRUCT_ADDRINFO
+
+/* Get 'socklen_t', and 'struct sockaddr' via sys/types.h which are
+   used below. */
+#  ifdef HAVE_SYS_TYPES_H
+#   include <sys/types.h>
+#  endif
 
 /* Structure to contain information about address of a service provider.  */
 struct addrinfo
@@ -39,38 +47,47 @@
   char *ai_canonname;		/* Canonical name for service location.  */
   struct addrinfo *ai_next;	/* Pointer to next in list.  */
 };
+# endif
 
 /* Possible values for `ai_flags' field in `addrinfo' structure.  */
-# define AI_PASSIVE	0x0001	/* Socket address is intended for `bind'.  */
-# define AI_CANONNAME	0x0002	/* Request for canonical name.  */
-# define AI_NUMERICHOST	0x0004	/* Don't use name resolution.  */
-# define AI_V4MAPPED	0x0008	/* IPv4 mapped addresses are acceptable.  */
-# define AI_ALL		0x0010	/* Return IPv4 mapped and IPv6 addresses.  */
-# define AI_ADDRCONFIG	0x0020	/* Use configuration of this host to choose
+# ifndef AI_PASSIVE
+#  define AI_PASSIVE	0x0001	/* Socket address is intended for `bind'.  */
+#  define AI_CANONNAME	0x0002	/* Request for canonical name.  */
+#  define AI_NUMERICHOST 0x0004	/* Don't use name resolution.  */
+#  define AI_V4MAPPED	0x0008	/* IPv4 mapped addresses are acceptable.  */
+#  define AI_ALL	0x0010	/* Return IPv4 mapped and IPv6 addresses.  */
+#  define AI_ADDRCONFIG	0x0020	/* Use configuration of this host to choose
 				   returned address type..  */
+# endif
 
 /* Error values for `getaddrinfo' function.  */
-# define EAI_BADFLAGS	  -1	/* Invalid value for `ai_flags' field.  */
-# define EAI_NONAME	  -2	/* NAME or SERVICE is unknown.  */
-# define EAI_AGAIN	  -3	/* Temporary failure in name resolution.  */
-# define EAI_FAIL	  -4	/* Non-recoverable failure in name res.  */
-# define EAI_NODATA	  -5	/* No address associated with NAME.  */
-# define EAI_FAMILY	  -6	/* `ai_family' not supported.  */
-# define EAI_SOCKTYPE	  -7	/* `ai_socktype' not supported.  */
-# define EAI_SERVICE	  -8	/* SERVICE not supported for `ai_socktype'.  */
-# define EAI_ADDRFAMILY	  -9	/* Address family for NAME not supported.  */
-# define EAI_MEMORY	  -10	/* Memory allocation failure.  */
-# define EAI_SYSTEM	  -11	/* System error returned in `errno'.  */
-# define EAI_OVERFLOW	  -12	/* Argument buffer overflow.  */
-# ifdef __USE_GNU
-#  define EAI_INPROGRESS  -100	/* Processing request in progress.  */
-#  define EAI_CANCELED	  -101	/* Request canceled.  */
-#  define EAI_NOTCANCELED -102	/* Request not canceled.  */
-#  define EAI_ALLDONE	  -103	/* All requests done.  */
-#  define EAI_INTR	  -104	/* Interrupted by a signal.  */
-#  define EAI_IDN_ENCODE  -105	/* IDN encoding failed.  */
+# ifndef EAI_BADFLAGS
+#  define EAI_BADFLAGS	  -1	/* Invalid value for `ai_flags' field.  */
+#  define EAI_NONAME	  -2	/* NAME or SERVICE is unknown.  */
+#  define EAI_AGAIN	  -3	/* Temporary failure in name resolution.  */
+#  define EAI_FAIL	  -4	/* Non-recoverable failure in name res.  */
+#  define EAI_NODATA	  -5	/* No address associated with NAME.  */
+#  define EAI_FAMILY	  -6	/* `ai_family' not supported.  */
+#  define EAI_SOCKTYPE	  -7	/* `ai_socktype' not supported.  */
+#  define EAI_SERVICE	  -8	/* SERVICE not supported for `ai_socktype'.  */
+#  define EAI_ADDRFAMILY  -9	/* Address family for NAME not supported.  */
+#  define EAI_MEMORY	  -10	/* Memory allocation failure.  */
+#  define EAI_SYSTEM	  -11	/* System error returned in `errno'.  */
+#  define EAI_OVERFLOW	  -12	/* Argument buffer overflow.  */
 # endif
 
+# ifdef __USE_GNU
+#  ifndef EAI_INPROGRESS
+#   define EAI_INPROGRESS	-100	/* Processing request in progress.  */
+#   define EAI_CANCELED		-101	/* Request canceled.  */
+#   define EAI_NOTCANCELED	-102	/* Request not canceled.  */
+#   define EAI_ALLDONE		-103	/* All requests done.  */
+#   define EAI_INTR		-104	/* Interrupted by a signal.  */
+#   define EAI_IDN_ENCODE	-105	/* IDN encoding failed.  */
+#  endif
+# endif
+
+# ifndef HAVE_DECL_GETADDRINFO
 /* Translate name of a service location and/or a service name to set of
    socket addresses.
    For more details, see the POSIX:2001 specification
@@ -79,17 +96,20 @@
 			const char *restrict servname,
 			const struct addrinfo *restrict hints,
 			struct addrinfo **restrict res);
+# endif
 
+# ifndef HAVE_DECL_FREEADDRINFO
 /* Free `addrinfo' structure AI including associated storage.
    For more details, see the POSIX:2001 specification
    <http://www.opengroup.org/susv3xsh/getaddrinfo.html>.  */
 extern void freeaddrinfo (struct addrinfo *ai);
+# endif
 
+# ifndef HAVE_DECL_GAI_STRERROR
 /* Convert error return from getaddrinfo() to a string.
    For more details, see the POSIX:2001 specification
    <http://www.opengroup.org/susv3xsh/gai_strerror.html>.  */
 extern const char *gai_strerror (int ecode);
-
-# endif /* !HAVE_GETADDRINFO */
+# endif
 
 #endif /* GETADDRINFO_H */