1/* 2PostgreSQL Database Management System 3(formerly known as Postgres, then as Postgres95) 4 5Portions Copyright (c) 1996-2005, The PostgreSQL Global Development Group 6 7Portions Copyright (c) 1994, The Regents of the University of California 8 9Permission to use, copy, modify, and distribute this software and its 10documentation for any purpose, without fee, and without a written agreement 11is hereby granted, provided that the above copyright notice and this paragraph 12and the following two paragraphs appear in all copies. 13 14IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR 15DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING 16LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, 17EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 18SUCH DAMAGE. 19 20THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 21INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 22AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 23ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS 24TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 25 26*/ 27 28/*------------------------------------------------------------------------- 29 * 30 * getaddrinfo.h 31 * Support getaddrinfo() on platforms that don't have it. 32 * 33 * Note: we use our own routines on platforms that don't HAVE_STRUCT_ADDRINFO, 34 * whether or not the library routine getaddrinfo() can be found. This 35 * policy is needed because on some platforms a manually installed libbind.a 36 * may provide getaddrinfo(), yet the system headers may not provide the 37 * struct definitions needed to call it. To avoid conflict with the libbind 38 * definition in such cases, we rename our routines to pg_xxx() via macros. 39 * 40 41in lib/replace we use rep_xxx() 42 43 * This code will also work on platforms where struct addrinfo is defined 44 * in the system headers but no getaddrinfo() can be located. 45 * 46 * Copyright (c) 2003-2007, PostgreSQL Global Development Group 47 * 48 *------------------------------------------------------------------------- 49 */ 50#ifndef GETADDRINFO_H 51#define GETADDRINFO_H 52 53#ifndef HAVE_GETADDRINFO 54 55/* Rename private copies per comments above */ 56#ifdef getaddrinfo 57#undef getaddrinfo 58#endif 59#define getaddrinfo rep_getaddrinfo 60#define HAVE_GETADDRINFO 61 62#ifdef freeaddrinfo 63#undef freeaddrinfo 64#endif 65#define freeaddrinfo rep_freeaddrinfo 66#define HAVE_FREEADDRINFO 67 68#ifdef gai_strerror 69#undef gai_strerror 70#endif 71#define gai_strerror rep_gai_strerror 72#define HAVE_GAI_STRERROR 73 74#ifdef getnameinfo 75#undef getnameinfo 76#endif 77#define getnameinfo rep_getnameinfo 78#ifndef HAVE_GETNAMEINFO 79#define HAVE_GETNAMEINFO 80#endif 81 82extern int rep_getaddrinfo(const char *node, const char *service, 83 const struct addrinfo * hints, struct addrinfo ** res); 84extern void rep_freeaddrinfo(struct addrinfo * res); 85extern const char *rep_gai_strerror(int errcode); 86extern int rep_getnameinfo(const struct sockaddr * sa, socklen_t salen, 87 char *node, size_t nodelen, 88 char *service, size_t servicelen, int flags); 89#endif /* HAVE_GETADDRINFO */ 90 91#endif /* GETADDRINFO_H */ 92