| 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 */
 | 
|---|