root/lib/replace/getaddrinfo.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */