1/*
2 * Copyright (C) 2005-2008  Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 2001  Internet Software Consortium.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 * PERFORMANCE OF THIS SOFTWARE.
16 */
17
18/* $Id: port_before.h.in,v 1.31 2008/02/28 05:36:10 marka Exp $ */
19
20#ifndef port_before_h
21#define port_before_h
22#include <config.h>
23
24#ifdef NEED_SUN4PROTOS
25#define _PARAMS(x) x
26#endif
27
28#ifdef __HAIKU__
29#	include <sys/sockio.h>
30#	define ETOOMANYREFS EBADF
31
32// inet_*() are just weak symbols
33#	define	inet_addr		__inet_addr
34#	define	inet_aton		__inet_aton
35#	define	inet_lnaof		__inet_lnaof
36#	define	inet_makeaddr	__inet_makeaddr
37#	define	inet_neta		__inet_neta
38#	define	inet_netof		__inet_netof
39#	define	inet_network	__inet_network
40#	define	inet_net_ntop	__inet_net_ntop
41#	define	inet_net_pton	__inet_net_pton
42#	define	inet_cidr_ntop	__inet_cidr_ntop
43#	define	inet_cidr_pton	__inet_cidr_pton
44#	define	inet_ntoa		__inet_ntoa
45#	define	inet_pton		__inet_pton
46#	define	inet_ntop		__inet_ntop
47#	define	inet_nsap_addr	__inet_nsap_addr
48#	define	inet_nsap_ntoa	__inet_nsap_ntoa
49#endif
50
51struct group;           /* silence warning */
52struct passwd;          /* silence warning */
53struct timeval;         /* silence warning */
54struct timezone;        /* silence warning */
55
56#ifdef HAVE_SYS_TIMERS_H
57#include <sys/timers.h>
58#endif
59#include <limits.h>
60
61#ifdef ISC_PLATFORM_NEEDTIMESPEC
62#include <time.h>		/* For time_t */
63struct timespec {
64	time_t  tv_sec;         /* seconds */
65	long    tv_nsec;        /* nanoseconds */
66};
67#endif
68#ifndef HAVE_MEMMOVE
69#define memmove(a,b,c) bcopy(b,a,c)
70#endif
71
72#undef WANT_IRS_GR
73#undef WANT_IRS_NIS
74#undef WANT_IRS_PW
75
76#undef BSD_COMP
77#undef HAVE_POLL
78#undef HAVE_MD5
79#undef SOLARIS2
80
81#define DO_PTHREADS
82#define GETGROUPLIST_ARGS const char *name, gid_t basegid, gid_t *groups, int *ngroups
83#define GETNETBYADDR_ADDR_T long
84#define SETPWENT_VOID 1
85#define SETGRENT_VOID 1
86
87#define NET_R_ARGS char *buf, int buflen
88#define NET_R_BAD NULL
89#define NET_R_COPY buf, buflen
90#define NET_R_COPY_ARGS NET_R_ARGS
91#define NET_R_END_RESULT(x) /*empty*/
92#define NET_R_END_RETURN void
93#undef NET_R_ENT_ARGS /*empty*/
94#define NET_R_OK nptr
95#define NET_R_RETURN struct netent *
96#undef NET_R_SET_RESULT /*empty*/
97#undef NET_R_SETANSWER
98#define NET_R_SET_RETURN void
99#undef NETENT_DATA
100
101
102#define GROUP_R_SET_RETURN void
103#undef GROUP_R_SET_RESULT /*empty*/
104#define GROUP_R_END_RETURN void
105#define GROUP_R_END_RESULT(x) /*empty*/
106
107#define GROUP_R_ENT_ARGS void
108
109
110
111#define HOST_R_ARGS char *buf, int buflen, int *h_errnop
112#define HOST_R_BAD NULL
113#define HOST_R_COPY buf, buflen
114#define HOST_R_COPY_ARGS char *buf, int buflen
115#define HOST_R_END_RESULT(x) /*empty*/
116#define HOST_R_END_RETURN void
117#undef HOST_R_ENT_ARGS /*empty*/
118#define HOST_R_ERRNO *h_errnop = h_errno
119#define HOST_R_OK hptr
120#define HOST_R_RETURN struct hostent *
121#undef HOST_R_SETANSWER
122#undef HOST_R_SET_RESULT
123#define HOST_R_SET_RETURN void
124#undef HOSTENT_DATA
125
126#define NGR_R_ARGS char *buf, int buflen
127#define NGR_R_BAD (0)
128#define NGR_R_COPY buf, buflen
129#define NGR_R_COPY_ARGS NGR_R_ARGS
130#define NGR_R_CONST
131#define NGR_R_END_RESULT(x)  /*empty*/
132#define NGR_R_END_RETURN void
133#undef NGR_R_END_ARGS /*empty*/
134#define NGR_R_OK 1
135#define NGR_R_RETURN int
136#define NGR_R_SET_CONST const
137#undef NGR_R_SET_RESULT /*empty*/
138#define NGR_R_SET_RETURN void
139#undef NGR_R_SET_ARGS
140
141
142#if !defined(NGR_R_SET_ARGS) && defined(NGR_R_END_ARGS)
143#define NGR_R_SET_ARGS NGR_R_END_ARGS
144#endif
145
146#define PROTO_R_ARGS char *buf, int buflen
147#define PROTO_R_BAD NULL
148#define PROTO_R_COPY buf, buflen
149#define PROTO_R_COPY_ARGS PROTO_R_ARGS
150#define PROTO_R_END_RESULT(x) /*empty*/
151#define PROTO_R_END_RETURN void
152#undef PROTO_R_ENT_ARGS /*empty*/
153#undef PROTO_R_ENT_UNUSED
154#define PROTO_R_OK pptr
155#undef PROTO_R_SETANSWER
156#define PROTO_R_RETURN struct protoent *
157#undef PROTO_R_SET_RESULT
158#define PROTO_R_SET_RETURN void
159#undef PROTOENT_DATA
160
161
162
163
164
165#define PASS_R_END_RESULT(x) /*empty*/
166#define PASS_R_END_RETURN void
167#undef PASS_R_ENT_ARGS
168
169
170#undef PASS_R_SET_RESULT /*empty*/
171#define PASS_R_SET_RETURN void
172
173#define SERV_R_ARGS char *buf, int buflen
174#define SERV_R_BAD NULL
175#define SERV_R_COPY buf, buflen
176#define SERV_R_COPY_ARGS SERV_R_ARGS
177#define SERV_R_END_RESULT(x) /*empty*/
178#define SERV_R_END_RETURN void
179#undef SERV_R_ENT_ARGS /*empty*/
180#undef SERV_R_ENT_UNUSED /*empty*/
181#define SERV_R_OK sptr
182#undef SERV_R_SETANSWER
183#define SERV_R_RETURN struct servent *
184#undef SERV_R_SET_RESULT
185#define SERV_R_SET_RETURN void
186
187
188
189#define DE_CONST(konst, var) \
190	do { \
191		union { const void *k; void *v; } _u; \
192		_u.k = konst; \
193		var = _u.v; \
194	} while (0)
195
196#define UNUSED(x) (x) = (x)
197
198#undef NEED_SOLARIS_BITTYPES
199#define ISC_SOCKLEN_T socklen_t
200
201#ifdef __GNUC__
202#define ISC_FORMAT_PRINTF(fmt, args) \
203	__attribute__((__format__(__printf__, fmt, args)))
204#else
205#define ISC_FORMAT_PRINTF(fmt, args)
206#endif
207
208/* Pull in host order macros when _XOPEN_SOURCE_EXTENDED is defined. */
209#if defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
210#include <sys/byteorder.h>
211#endif
212
213#endif
214
215/*! \file */
216