Remove duplicate check for volatile, move all utime-checks to
[ira/wip.git] / lib / replace / getaddrinfo.h
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 */