| 1 | /* | 
|---|
| 2 | PostgreSQL Database Management System | 
|---|
| 3 | (formerly known as Postgres, then as Postgres95) | 
|---|
| 4 |  | 
|---|
| 5 | Portions Copyright (c) 1996-2005, The PostgreSQL Global Development Group | 
|---|
| 6 |  | 
|---|
| 7 | Portions Copyright (c) 1994, The Regents of the University of California | 
|---|
| 8 |  | 
|---|
| 9 | Permission to use, copy, modify, and distribute this software and its | 
|---|
| 10 | documentation for any purpose, without fee, and without a written agreement | 
|---|
| 11 | is hereby granted, provided that the above copyright notice and this paragraph | 
|---|
| 12 | and the following two paragraphs appear in all copies. | 
|---|
| 13 |  | 
|---|
| 14 | IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR | 
|---|
| 15 | DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING | 
|---|
| 16 | LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, | 
|---|
| 17 | EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF | 
|---|
| 18 | SUCH DAMAGE. | 
|---|
| 19 |  | 
|---|
| 20 | THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, | 
|---|
| 21 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY | 
|---|
| 22 | AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS | 
|---|
| 23 | ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS | 
|---|
| 24 | TO 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 |  | 
|---|
| 41 | in 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 |  | 
|---|
| 82 | extern int rep_getaddrinfo(const char *node, const char *service, | 
|---|
| 83 | const struct addrinfo * hints, struct addrinfo ** res); | 
|---|
| 84 | extern void rep_freeaddrinfo(struct addrinfo * res); | 
|---|
| 85 | extern const char *rep_gai_strerror(int errcode); | 
|---|
| 86 | extern 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 */ | 
|---|