1b528cefcSMark Murray /*
2c19800e8SDoug Rabson  * Copyright (c) 1995 - 2005 Kungliga Tekniska Högskolan
3b528cefcSMark Murray  * (Royal Institute of Technology, Stockholm, Sweden).
4b528cefcSMark Murray  * All rights reserved.
5b528cefcSMark Murray  *
6b528cefcSMark Murray  * Redistribution and use in source and binary forms, with or without
7b528cefcSMark Murray  * modification, are permitted provided that the following conditions
8b528cefcSMark Murray  * are met:
9b528cefcSMark Murray  *
10b528cefcSMark Murray  * 1. Redistributions of source code must retain the above copyright
11b528cefcSMark Murray  *    notice, this list of conditions and the following disclaimer.
12b528cefcSMark Murray  *
13b528cefcSMark Murray  * 2. Redistributions in binary form must reproduce the above copyright
14b528cefcSMark Murray  *    notice, this list of conditions and the following disclaimer in the
15b528cefcSMark Murray  *    documentation and/or other materials provided with the distribution.
16b528cefcSMark Murray  *
17b528cefcSMark Murray  * 3. Neither the name of the Institute nor the names of its contributors
18b528cefcSMark Murray  *    may be used to endorse or promote products derived from this software
19b528cefcSMark Murray  *    without specific prior written permission.
20b528cefcSMark Murray  *
21b528cefcSMark Murray  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22b528cefcSMark Murray  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23b528cefcSMark Murray  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24b528cefcSMark Murray  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25b528cefcSMark Murray  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26b528cefcSMark Murray  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27b528cefcSMark Murray  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28b528cefcSMark Murray  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29b528cefcSMark Murray  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30b528cefcSMark Murray  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31b528cefcSMark Murray  * SUCH DAMAGE.
32b528cefcSMark Murray  */
33b528cefcSMark Murray 
34c19800e8SDoug Rabson /* $Id$ */
35b528cefcSMark Murray 
36b528cefcSMark Murray #ifndef __ROKEN_COMMON_H__
37b528cefcSMark Murray #define __ROKEN_COMMON_H__
38b528cefcSMark Murray 
39c19800e8SDoug Rabson #ifndef ROKEN_LIB_FUNCTION
40c19800e8SDoug Rabson #ifdef _WIN32
41c19800e8SDoug Rabson #define ROKEN_LIB_FUNCTION
42c19800e8SDoug Rabson #define ROKEN_LIB_CALL     __cdecl
43c19800e8SDoug Rabson #else
44c19800e8SDoug Rabson #define ROKEN_LIB_FUNCTION
45c19800e8SDoug Rabson #define ROKEN_LIB_CALL
46c19800e8SDoug Rabson #endif
475e9cd1aeSAssar Westerlund #endif
485e9cd1aeSAssar Westerlund 
495e9cd1aeSAssar Westerlund #ifdef __cplusplus
505e9cd1aeSAssar Westerlund #define ROKEN_CPP_START	extern "C" {
515e9cd1aeSAssar Westerlund #define ROKEN_CPP_END	}
525e9cd1aeSAssar Westerlund #else
535e9cd1aeSAssar Westerlund #define ROKEN_CPP_START
545e9cd1aeSAssar Westerlund #define ROKEN_CPP_END
55b528cefcSMark Murray #endif
56b528cefcSMark Murray 
57b528cefcSMark Murray #ifndef INADDR_NONE
58b528cefcSMark Murray #define INADDR_NONE 0xffffffff
59b528cefcSMark Murray #endif
60b528cefcSMark Murray 
61b528cefcSMark Murray #ifndef INADDR_LOOPBACK
62b528cefcSMark Murray #define INADDR_LOOPBACK 0x7f000001
63b528cefcSMark Murray #endif
64b528cefcSMark Murray 
65b528cefcSMark Murray #ifndef SOMAXCONN
66b528cefcSMark Murray #define SOMAXCONN 5
67b528cefcSMark Murray #endif
68b528cefcSMark Murray 
69b528cefcSMark Murray #ifndef STDIN_FILENO
70b528cefcSMark Murray #define STDIN_FILENO 0
71b528cefcSMark Murray #endif
72b528cefcSMark Murray 
73b528cefcSMark Murray #ifndef STDOUT_FILENO
74b528cefcSMark Murray #define STDOUT_FILENO 1
75b528cefcSMark Murray #endif
76b528cefcSMark Murray 
77b528cefcSMark Murray #ifndef STDERR_FILENO
78b528cefcSMark Murray #define STDERR_FILENO 2
79b528cefcSMark Murray #endif
80b528cefcSMark Murray 
81b528cefcSMark Murray #ifndef max
82b528cefcSMark Murray #define max(a,b) (((a)>(b))?(a):(b))
83b528cefcSMark Murray #endif
84b528cefcSMark Murray 
85b528cefcSMark Murray #ifndef min
86b528cefcSMark Murray #define min(a,b) (((a)<(b))?(a):(b))
87b528cefcSMark Murray #endif
88b528cefcSMark Murray 
89b528cefcSMark Murray #ifndef TRUE
90b528cefcSMark Murray #define TRUE 1
91b528cefcSMark Murray #endif
92b528cefcSMark Murray 
93b528cefcSMark Murray #ifndef FALSE
94b528cefcSMark Murray #define FALSE 0
95b528cefcSMark Murray #endif
96b528cefcSMark Murray 
97b528cefcSMark Murray #ifndef LOG_DAEMON
98b528cefcSMark Murray #define openlog(id,option,facility) openlog((id),(option))
99b528cefcSMark Murray #define	LOG_DAEMON	0
100b528cefcSMark Murray #endif
101b528cefcSMark Murray #ifndef LOG_ODELAY
102b528cefcSMark Murray #define LOG_ODELAY 0
103b528cefcSMark Murray #endif
104b528cefcSMark Murray #ifndef LOG_NDELAY
105b528cefcSMark Murray #define LOG_NDELAY 0x08
106b528cefcSMark Murray #endif
107b528cefcSMark Murray #ifndef LOG_CONS
108b528cefcSMark Murray #define LOG_CONS 0
109b528cefcSMark Murray #endif
110b528cefcSMark Murray #ifndef LOG_AUTH
111b528cefcSMark Murray #define LOG_AUTH 0
112b528cefcSMark Murray #endif
113b528cefcSMark Murray #ifndef LOG_AUTHPRIV
114b528cefcSMark Murray #define LOG_AUTHPRIV LOG_AUTH
115b528cefcSMark Murray #endif
116b528cefcSMark Murray 
117b528cefcSMark Murray #ifndef F_OK
118b528cefcSMark Murray #define F_OK 0
119b528cefcSMark Murray #endif
120b528cefcSMark Murray 
121b528cefcSMark Murray #ifndef O_ACCMODE
122b528cefcSMark Murray #define O_ACCMODE	003
12313e3f4d6SMark Murray #endif
12413e3f4d6SMark Murray 
12513e3f4d6SMark Murray #ifndef _WIN32
12613e3f4d6SMark Murray 
127b528cefcSMark Murray #ifndef _PATH_DEV
128b528cefcSMark Murray #define _PATH_DEV "/dev/"
129b528cefcSMark Murray #endif
130b528cefcSMark Murray 
131b528cefcSMark Murray #ifndef _PATH_DEVNULL
132b528cefcSMark Murray #define _PATH_DEVNULL "/dev/null"
133b528cefcSMark Murray #endif
134b528cefcSMark Murray 
1355e9cd1aeSAssar Westerlund #ifndef _PATH_HEQUIV
1365e9cd1aeSAssar Westerlund #define _PATH_HEQUIV "/etc/hosts.equiv"
1375e9cd1aeSAssar Westerlund #endif
1385e9cd1aeSAssar Westerlund 
1395e9cd1aeSAssar Westerlund #ifndef _PATH_VARRUN
1405e9cd1aeSAssar Westerlund #define _PATH_VARRUN "/var/run/"
1415e9cd1aeSAssar Westerlund #endif
1425e9cd1aeSAssar Westerlund 
143b528cefcSMark Murray #ifndef _PATH_BSHELL
144b528cefcSMark Murray #define _PATH_BSHELL "/bin/sh"
145b528cefcSMark Murray #endif
146b528cefcSMark Murray 
147b528cefcSMark Murray #ifndef MAXPATHLEN
1485e9cd1aeSAssar Westerlund #define MAXPATHLEN (1024+4)
149b528cefcSMark Murray #endif
150b528cefcSMark Murray 
151b528cefcSMark Murray #endif	/* !_WIN32 */
152b528cefcSMark Murray 
153b528cefcSMark Murray #ifndef PATH_MAX
154b528cefcSMark Murray #define PATH_MAX MAX_PATH
155b528cefcSMark Murray #endif
156b528cefcSMark Murray 
157b528cefcSMark Murray #ifndef RETSIGTYPE
158b528cefcSMark Murray #define RETSIGTYPE void
159b528cefcSMark Murray #endif
160b528cefcSMark Murray 
161b528cefcSMark Murray #ifndef SIG_ERR
162b528cefcSMark Murray #define SIG_ERR ((RETSIGTYPE (*)(int))-1)
163b528cefcSMark Murray #endif
164b528cefcSMark Murray 
165b528cefcSMark Murray /*
166b528cefcSMark Murray  * error code for getipnodeby{name,addr}
167b528cefcSMark Murray  */
168b528cefcSMark Murray 
169b528cefcSMark Murray #ifndef HOST_NOT_FOUND
170b528cefcSMark Murray #define HOST_NOT_FOUND 1
171b528cefcSMark Murray #endif
172b528cefcSMark Murray 
173b528cefcSMark Murray #ifndef TRY_AGAIN
174b528cefcSMark Murray #define TRY_AGAIN 2
175b528cefcSMark Murray #endif
176b528cefcSMark Murray 
177b528cefcSMark Murray #ifndef NO_RECOVERY
178b528cefcSMark Murray #define NO_RECOVERY 3
179b528cefcSMark Murray #endif
180b528cefcSMark Murray 
181b528cefcSMark Murray #ifndef NO_DATA
182b528cefcSMark Murray #define NO_DATA 4
1831c43270aSJacques Vidrine #endif
184b528cefcSMark Murray 
185b528cefcSMark Murray #ifndef NO_ADDRESS
186b528cefcSMark Murray #define NO_ADDRESS NO_DATA
187b528cefcSMark Murray #endif
188b528cefcSMark Murray 
189b528cefcSMark Murray /*
190b528cefcSMark Murray  * error code for getaddrinfo
191b528cefcSMark Murray  */
192b528cefcSMark Murray 
193b528cefcSMark Murray #ifndef EAI_NOERROR
194b528cefcSMark Murray #define EAI_NOERROR	0	/* no error */
195b528cefcSMark Murray #endif
196b528cefcSMark Murray 
1971c43270aSJacques Vidrine #ifndef EAI_NONAME
198b528cefcSMark Murray 
199b528cefcSMark Murray #define EAI_ADDRFAMILY	1	/* address family for nodename not supported */
200b528cefcSMark Murray #define EAI_AGAIN	2	/* temporary failure in name resolution */
201b528cefcSMark Murray #define EAI_BADFLAGS	3	/* invalid value for ai_flags */
202b528cefcSMark Murray #define EAI_FAIL	4	/* non-recoverable failure in name resolution */
203b528cefcSMark Murray #define EAI_FAMILY	5	/* ai_family not supported */
204b528cefcSMark Murray #define EAI_MEMORY	6	/* memory allocation failure */
205b528cefcSMark Murray #define EAI_NODATA	7	/* no address associated with nodename */
2068373020dSJacques Vidrine #define EAI_NONAME	8	/* nodename nor servname provided, or not known */
2078373020dSJacques Vidrine #define EAI_SERVICE	9	/* servname not supported for ai_socktype */
2088373020dSJacques Vidrine #define EAI_SOCKTYPE   10	/* ai_socktype not supported */
2098373020dSJacques Vidrine #define EAI_SYSTEM     11	/* system error returned in errno */
210b528cefcSMark Murray 
211b528cefcSMark Murray #endif /* EAI_NONAME */
212b528cefcSMark Murray 
213b528cefcSMark Murray /* flags for getaddrinfo() */
214b528cefcSMark Murray 
215b528cefcSMark Murray #ifndef AI_PASSIVE
216b528cefcSMark Murray #define AI_PASSIVE	0x01
217b528cefcSMark Murray #define AI_CANONNAME	0x02
218b528cefcSMark Murray #endif /* AI_PASSIVE */
219b528cefcSMark Murray 
220b528cefcSMark Murray #ifndef AI_NUMERICHOST
221b528cefcSMark Murray #define AI_NUMERICHOST	0x04
222b528cefcSMark Murray #endif
223b528cefcSMark Murray 
224b528cefcSMark Murray #ifndef AI_NUMERICSERV
225b528cefcSMark Murray #define AI_NUMERICSERV  0x08
226b528cefcSMark Murray #endif
227b528cefcSMark Murray 
228b528cefcSMark Murray /* flags for getnameinfo() */
229b528cefcSMark Murray 
230b528cefcSMark Murray #ifndef NI_DGRAM
231b528cefcSMark Murray #define NI_DGRAM	0x01
232b528cefcSMark Murray #define NI_NAMEREQD	0x02
233b528cefcSMark Murray #define NI_NOFQDN	0x04
234b528cefcSMark Murray #define NI_NUMERICHOST	0x08
235b528cefcSMark Murray #define NI_NUMERICSERV	0x10
236b528cefcSMark Murray #endif
237b528cefcSMark Murray 
238b528cefcSMark Murray /*
239b528cefcSMark Murray  * constants for getnameinfo
240b528cefcSMark Murray  */
241b528cefcSMark Murray 
242b528cefcSMark Murray #ifndef NI_MAXHOST
243b528cefcSMark Murray #define NI_MAXHOST  1025
244b528cefcSMark Murray #define NI_MAXSERV    32
245b528cefcSMark Murray #endif
246b528cefcSMark Murray 
247b528cefcSMark Murray /*
248b528cefcSMark Murray  * constants for inet_ntop
249b528cefcSMark Murray  */
250b528cefcSMark Murray 
251b528cefcSMark Murray #ifndef INET_ADDRSTRLEN
252b528cefcSMark Murray #define INET_ADDRSTRLEN    16
253b528cefcSMark Murray #endif
254b528cefcSMark Murray 
255b528cefcSMark Murray #ifndef INET6_ADDRSTRLEN
256b528cefcSMark Murray #define INET6_ADDRSTRLEN   46
257b528cefcSMark Murray #endif
258b528cefcSMark Murray 
259b528cefcSMark Murray /*
260b528cefcSMark Murray  * for shutdown(2)
2615e9cd1aeSAssar Westerlund  */
2625e9cd1aeSAssar Westerlund 
2630cadf2f4SJacques Vidrine #ifndef SHUT_RD
264b528cefcSMark Murray #define SHUT_RD 0
2655e9cd1aeSAssar Westerlund #endif
266b528cefcSMark Murray 
267b528cefcSMark Murray #ifndef SHUT_WR
268b528cefcSMark Murray #define SHUT_WR 1
269b528cefcSMark Murray #endif
270c19800e8SDoug Rabson 
271c19800e8SDoug Rabson #ifndef SHUT_RDWR
272b528cefcSMark Murray #define SHUT_RDWR 2
273c19800e8SDoug Rabson #endif
274c19800e8SDoug Rabson 
275c19800e8SDoug Rabson #ifndef HAVE___ATTRIBUTE__
276c19800e8SDoug Rabson #define __attribute__(x)
277c19800e8SDoug Rabson #endif
278c19800e8SDoug Rabson 
279b528cefcSMark Murray ROKEN_CPP_START
280c19800e8SDoug Rabson 
281c19800e8SDoug Rabson #ifndef IRIX4 /* fix for compiler bug */
282c19800e8SDoug Rabson #ifndef _WIN32
283c19800e8SDoug Rabson #ifdef RETSIGTYPE
284c19800e8SDoug Rabson typedef RETSIGTYPE (*SigAction)(int);
285b528cefcSMark Murray SigAction signal(int iSig, SigAction pAction); /* BSD compatible */
286c19800e8SDoug Rabson #endif
287c19800e8SDoug Rabson #endif
288c19800e8SDoug Rabson #endif
289c19800e8SDoug Rabson 
290c19800e8SDoug Rabson #define SE_E_UNSPECIFIED (-1)
291c19800e8SDoug Rabson #define SE_E_FORKFAILED  (-2)
292c19800e8SDoug Rabson #define SE_E_WAITPIDFAILED (-3)
293c19800e8SDoug Rabson #define SE_E_EXECTIMEOUT (-4)
294c19800e8SDoug Rabson #define SE_E_NOEXEC   126
295c19800e8SDoug Rabson #define SE_E_NOTFOUND 127
296c19800e8SDoug Rabson 
297c19800e8SDoug Rabson #define SE_PROCSTATUS(st) (((st) >= 0 && (st) < 126)? st: -1)
298c19800e8SDoug Rabson #define SE_PROCSIGNAL(st) (((st) >= 128)? (st) - 128: -1)
299c19800e8SDoug Rabson #define SE_IS_ERROR(st) ((st) < 0 || (st) >= 126)
300c19800e8SDoug Rabson 
301c19800e8SDoug Rabson 
302c19800e8SDoug Rabson #define simple_execve rk_simple_execve
303c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
304c19800e8SDoug Rabson simple_execve(const char*, char*const[], char*const[]);
305c19800e8SDoug Rabson 
306c19800e8SDoug Rabson #define simple_execve_timed rk_simple_execve_timed
307c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
308c19800e8SDoug Rabson simple_execve_timed(const char *, char *const[],
309b528cefcSMark Murray 		    char *const [], time_t (*)(void *),
3104137ff4cSJacques Vidrine 		    void *, time_t);
3114137ff4cSJacques Vidrine 
312c19800e8SDoug Rabson #define simple_execvp rk_simple_execvp
313c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
3144137ff4cSJacques Vidrine simple_execvp(const char*, char *const[]);
315c19800e8SDoug Rabson 
316c19800e8SDoug Rabson #define simple_execvp_timed rk_simple_execvp_timed
3175e9cd1aeSAssar Westerlund ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
318c19800e8SDoug Rabson simple_execvp_timed(const char *, char *const[],
319c19800e8SDoug Rabson 		    time_t (*)(void *), void *, time_t);
320b528cefcSMark Murray 
321c19800e8SDoug Rabson #define simple_execlp rk_simple_execlp
322c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
323b528cefcSMark Murray simple_execlp(const char*, ...);
324c19800e8SDoug Rabson 
325c19800e8SDoug Rabson #define simple_execle rk_simple_execle
326b528cefcSMark Murray ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
327c19800e8SDoug Rabson simple_execle(const char*, ...);
328c19800e8SDoug Rabson 
329b528cefcSMark Murray #define wait_for_process rk_wait_for_process
330c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
331c19800e8SDoug Rabson wait_for_process(pid_t);
332b528cefcSMark Murray 
333c19800e8SDoug Rabson #define wait_for_process_timed rk_wait_for_process_timed
334c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
335b528cefcSMark Murray wait_for_process_timed(pid_t, time_t (*)(void *),
336c19800e8SDoug Rabson 		       void *, time_t);
337c19800e8SDoug Rabson 
338b528cefcSMark Murray #define pipe_execv rk_pipe_execv
339c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
340c19800e8SDoug Rabson pipe_execv(FILE**, FILE**, FILE**, const char*, ...);
3414137ff4cSJacques Vidrine 
342c19800e8SDoug Rabson #define print_version rk_print_version
343c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
344b528cefcSMark Murray print_version(const char *);
345c19800e8SDoug Rabson 
346c19800e8SDoug Rabson #define eread rk_eread
347b528cefcSMark Murray ROKEN_LIB_FUNCTION ssize_t ROKEN_LIB_CALL
348c19800e8SDoug Rabson eread (int fd, void *buf, size_t nbytes);
349c19800e8SDoug Rabson 
350b528cefcSMark Murray #define ewrite rk_ewrite
351c19800e8SDoug Rabson ROKEN_LIB_FUNCTION ssize_t ROKEN_LIB_CALL
352c19800e8SDoug Rabson ewrite (int fd, const void *buf, size_t nbytes);
353c19800e8SDoug Rabson 
354c19800e8SDoug Rabson struct hostent;
35513e3f4d6SMark Murray 
35613e3f4d6SMark Murray #define hostent_find_fqdn rk_hostent_find_fqdn
357c19800e8SDoug Rabson ROKEN_LIB_FUNCTION const char * ROKEN_LIB_CALL
35813e3f4d6SMark Murray hostent_find_fqdn (const struct hostent *);
35913e3f4d6SMark Murray 
360c19800e8SDoug Rabson #define esetenv rk_esetenv
361c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
3625e9cd1aeSAssar Westerlund esetenv(const char *, const char *, int);
363c19800e8SDoug Rabson 
364c19800e8SDoug Rabson #define socket_set_address_and_port rk_socket_set_address_and_port
3655e9cd1aeSAssar Westerlund ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
366c19800e8SDoug Rabson socket_set_address_and_port (struct sockaddr *, const void *, int);
367c19800e8SDoug Rabson 
368c19800e8SDoug Rabson #define socket_addr_size rk_socket_addr_size
369c19800e8SDoug Rabson ROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL
370c19800e8SDoug Rabson socket_addr_size (const struct sockaddr *);
371c19800e8SDoug Rabson 
372c19800e8SDoug Rabson #define socket_set_any rk_socket_set_any
373c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
374c19800e8SDoug Rabson socket_set_any (struct sockaddr *, int);
375c19800e8SDoug Rabson 
3765e9cd1aeSAssar Westerlund #define socket_sockaddr_size rk_socket_sockaddr_size
3775e9cd1aeSAssar Westerlund ROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL
378c19800e8SDoug Rabson socket_sockaddr_size (const struct sockaddr *);
379c19800e8SDoug Rabson 
380c19800e8SDoug Rabson #define socket_get_address rk_socket_get_address
381c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL
382c19800e8SDoug Rabson socket_get_address (const struct sockaddr *);
3835e9cd1aeSAssar Westerlund 
3845e9cd1aeSAssar Westerlund #define socket_get_port rk_socket_get_port
385c19800e8SDoug Rabson ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
386c19800e8SDoug Rabson socket_get_port (const struct sockaddr *);
387c19800e8SDoug Rabson 
388c19800e8SDoug Rabson #define socket_set_port rk_socket_set_port
389c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
390c19800e8SDoug Rabson socket_set_port (struct sockaddr *, int);
391c19800e8SDoug Rabson 
392c19800e8SDoug Rabson #define socket_set_portrange rk_socket_set_portrange
393c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
394c19800e8SDoug Rabson socket_set_portrange (rk_socket_t, int, int);
395c19800e8SDoug Rabson 
396c19800e8SDoug Rabson #define socket_set_debug rk_socket_set_debug
397c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
398c19800e8SDoug Rabson socket_set_debug (rk_socket_t);
399c19800e8SDoug Rabson 
400c19800e8SDoug Rabson #define socket_set_tos rk_socket_set_tos
401c19800e8SDoug Rabson ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
402c19800e8SDoug Rabson socket_set_tos (rk_socket_t, int);
4035e9cd1aeSAssar Westerlund 
404283d988cSMark Murray #define socket_set_reuseaddr rk_socket_set_reuseaddr
405b528cefcSMark Murray ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
406 socket_set_reuseaddr (rk_socket_t, int);
407 
408 #define socket_set_ipv6only rk_socket_set_ipv6only
409 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
410 socket_set_ipv6only (rk_socket_t, int);
411 
412 #define socket_to_fd rk_socket_to_fd
413 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
414 socket_to_fd(rk_socket_t, int);
415 
416 #define vstrcollect rk_vstrcollect
417 ROKEN_LIB_FUNCTION char ** ROKEN_LIB_CALL
418 vstrcollect(va_list *ap);
419 
420 #define strcollect rk_strcollect
421 ROKEN_LIB_FUNCTION char ** ROKEN_LIB_CALL
422 strcollect(char *first, ...);
423 
424 #define timevalfix rk_timevalfix
425 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
426 timevalfix(struct timeval *t1);
427 
428 #define timevaladd rk_timevaladd
429 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
430 timevaladd(struct timeval *t1, const struct timeval *t2);
431 
432 #define timevalsub rk_timevalsub
433 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
434 timevalsub(struct timeval *t1, const struct timeval *t2);
435 
436 #define pid_file_write rk_pid_file_write
437 ROKEN_LIB_FUNCTION char * ROKEN_LIB_CALL
438 pid_file_write (const char *progname);
439 
440 #define pid_file_delete rk_pid_file_delete
441 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
442 pid_file_delete (char **);
443 
444 #define read_environment rk_read_environment
445 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
446 read_environment(const char *file, char ***env);
447 
448 #define free_environment rk_free_environment
449 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
450 free_environment(char **);
451 
452 #define warnerr rk_warnerr
453 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
454 rk_warnerr(int doerrno, const char *fmt, va_list ap)
455     __attribute__ ((format (printf, 2, 0)));
456 
457 ROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL
458 rk_realloc(void *, size_t);
459 
460 struct rk_strpool;
461 
462 ROKEN_LIB_FUNCTION char * ROKEN_LIB_CALL
463 rk_strpoolcollect(struct rk_strpool *);
464 
465 ROKEN_LIB_FUNCTION struct rk_strpool * ROKEN_LIB_CALL
466 rk_strpoolprintf(struct rk_strpool *, const char *, ...)
467     __attribute__ ((format (printf, 2, 3)));
468 
469 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
470 rk_strpoolfree(struct rk_strpool *);
471 
472 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
473 rk_dumpdata (const char *, const void *, size_t);
474 
475 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
476 rk_undumpdata (const char *, void **, size_t *);
477 
478 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
479 rk_xfree (void *);
480 
481 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
482 rk_cloexec(int);
483 
484 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
485 rk_cloexec_file(FILE *);
486 
487 ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
488 rk_cloexec_dir(DIR *);
489 
490 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
491 ct_memcmp(const void *, const void *, size_t);
492 
493 void ROKEN_LIB_FUNCTION
494 rk_random_init(void);
495 
496 ROKEN_CPP_END
497 
498 #endif /* __ROKEN_COMMON_H__ */
499