155682Smarkm/*
2233294Sstas * Copyright (c) 1995 - 2005 Kungliga Tekniska H��gskolan
355682Smarkm * (Royal Institute of Technology, Stockholm, Sweden).
455682Smarkm * All rights reserved.
5233294Sstas *
655682Smarkm * Redistribution and use in source and binary forms, with or without
755682Smarkm * modification, are permitted provided that the following conditions
855682Smarkm * are met:
9233294Sstas *
1055682Smarkm * 1. Redistributions of source code must retain the above copyright
1155682Smarkm *    notice, this list of conditions and the following disclaimer.
12233294Sstas *
1355682Smarkm * 2. Redistributions in binary form must reproduce the above copyright
1455682Smarkm *    notice, this list of conditions and the following disclaimer in the
1555682Smarkm *    documentation and/or other materials provided with the distribution.
16233294Sstas *
1755682Smarkm * 3. Neither the name of the Institute nor the names of its contributors
1855682Smarkm *    may be used to endorse or promote products derived from this software
1955682Smarkm *    without specific prior written permission.
20233294Sstas *
2155682Smarkm * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
2255682Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2355682Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2455682Smarkm * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
2555682Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2655682Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2755682Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2855682Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2955682Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3055682Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3155682Smarkm * SUCH DAMAGE.
3255682Smarkm */
3355682Smarkm
34233294Sstas/* $Id$ */
3555682Smarkm
3655682Smarkm#ifndef __ROKEN_COMMON_H__
3755682Smarkm#define __ROKEN_COMMON_H__
3855682Smarkm
39178825Sdfr#ifndef ROKEN_LIB_FUNCTION
40178825Sdfr#ifdef _WIN32
41233294Sstas#define ROKEN_LIB_FUNCTION
42233294Sstas#define ROKEN_LIB_CALL     __cdecl
43178825Sdfr#else
44178825Sdfr#define ROKEN_LIB_FUNCTION
45233294Sstas#define ROKEN_LIB_CALL
46178825Sdfr#endif
47178825Sdfr#endif
48178825Sdfr
4972445Sassar#ifdef __cplusplus
5072445Sassar#define ROKEN_CPP_START	extern "C" {
5172445Sassar#define ROKEN_CPP_END	}
5272445Sassar#else
5372445Sassar#define ROKEN_CPP_START
5472445Sassar#define ROKEN_CPP_END
5572445Sassar#endif
5672445Sassar
5755682Smarkm#ifndef INADDR_NONE
5855682Smarkm#define INADDR_NONE 0xffffffff
5955682Smarkm#endif
6055682Smarkm
6155682Smarkm#ifndef INADDR_LOOPBACK
6255682Smarkm#define INADDR_LOOPBACK 0x7f000001
6355682Smarkm#endif
6455682Smarkm
6555682Smarkm#ifndef SOMAXCONN
6655682Smarkm#define SOMAXCONN 5
6755682Smarkm#endif
6855682Smarkm
6955682Smarkm#ifndef STDIN_FILENO
7055682Smarkm#define STDIN_FILENO 0
7155682Smarkm#endif
7255682Smarkm
7355682Smarkm#ifndef STDOUT_FILENO
7455682Smarkm#define STDOUT_FILENO 1
7555682Smarkm#endif
7655682Smarkm
7755682Smarkm#ifndef STDERR_FILENO
7855682Smarkm#define STDERR_FILENO 2
7955682Smarkm#endif
8055682Smarkm
8155682Smarkm#ifndef max
8255682Smarkm#define max(a,b) (((a)>(b))?(a):(b))
8355682Smarkm#endif
8455682Smarkm
8555682Smarkm#ifndef min
8655682Smarkm#define min(a,b) (((a)<(b))?(a):(b))
8755682Smarkm#endif
8855682Smarkm
8955682Smarkm#ifndef TRUE
9055682Smarkm#define TRUE 1
9155682Smarkm#endif
9255682Smarkm
9355682Smarkm#ifndef FALSE
9455682Smarkm#define FALSE 0
9555682Smarkm#endif
9655682Smarkm
9755682Smarkm#ifndef LOG_DAEMON
9855682Smarkm#define openlog(id,option,facility) openlog((id),(option))
9955682Smarkm#define	LOG_DAEMON	0
10055682Smarkm#endif
10155682Smarkm#ifndef LOG_ODELAY
10255682Smarkm#define LOG_ODELAY 0
10355682Smarkm#endif
10455682Smarkm#ifndef LOG_NDELAY
10555682Smarkm#define LOG_NDELAY 0x08
10655682Smarkm#endif
10755682Smarkm#ifndef LOG_CONS
10855682Smarkm#define LOG_CONS 0
10955682Smarkm#endif
11055682Smarkm#ifndef LOG_AUTH
11155682Smarkm#define LOG_AUTH 0
11255682Smarkm#endif
11355682Smarkm#ifndef LOG_AUTHPRIV
11455682Smarkm#define LOG_AUTHPRIV LOG_AUTH
11555682Smarkm#endif
11655682Smarkm
11755682Smarkm#ifndef F_OK
11855682Smarkm#define F_OK 0
11955682Smarkm#endif
12055682Smarkm
12155682Smarkm#ifndef O_ACCMODE
12255682Smarkm#define O_ACCMODE	003
12355682Smarkm#endif
12455682Smarkm
125233294Sstas#ifndef _WIN32
126233294Sstas
12757416Smarkm#ifndef _PATH_DEV
12857416Smarkm#define _PATH_DEV "/dev/"
12957416Smarkm#endif
13057416Smarkm
13155682Smarkm#ifndef _PATH_DEVNULL
13255682Smarkm#define _PATH_DEVNULL "/dev/null"
13355682Smarkm#endif
13455682Smarkm
13555682Smarkm#ifndef _PATH_HEQUIV
13655682Smarkm#define _PATH_HEQUIV "/etc/hosts.equiv"
13755682Smarkm#endif
13855682Smarkm
13972445Sassar#ifndef _PATH_VARRUN
14072445Sassar#define _PATH_VARRUN "/var/run/"
14172445Sassar#endif
14272445Sassar
14372445Sassar#ifndef _PATH_BSHELL
14472445Sassar#define _PATH_BSHELL "/bin/sh"
14572445Sassar#endif
14672445Sassar
14755682Smarkm#ifndef MAXPATHLEN
14855682Smarkm#define MAXPATHLEN (1024+4)
14955682Smarkm#endif
15055682Smarkm
151233294Sstas#endif	/* !_WIN32 */
152233294Sstas
153233294Sstas#ifndef PATH_MAX
154233294Sstas#define PATH_MAX MAX_PATH
155233294Sstas#endif
156233294Sstas
157233294Sstas#ifndef RETSIGTYPE
158233294Sstas#define RETSIGTYPE void
159233294Sstas#endif
160233294Sstas
16155682Smarkm#ifndef SIG_ERR
16272445Sassar#define SIG_ERR ((RETSIGTYPE (*)(int))-1)
16355682Smarkm#endif
16455682Smarkm
16555682Smarkm/*
16655682Smarkm * error code for getipnodeby{name,addr}
16755682Smarkm */
16855682Smarkm
16955682Smarkm#ifndef HOST_NOT_FOUND
17055682Smarkm#define HOST_NOT_FOUND 1
17155682Smarkm#endif
17255682Smarkm
17355682Smarkm#ifndef TRY_AGAIN
17455682Smarkm#define TRY_AGAIN 2
17555682Smarkm#endif
17655682Smarkm
17755682Smarkm#ifndef NO_RECOVERY
17855682Smarkm#define NO_RECOVERY 3
17955682Smarkm#endif
18055682Smarkm
18155682Smarkm#ifndef NO_DATA
18255682Smarkm#define NO_DATA 4
18355682Smarkm#endif
18455682Smarkm
18555682Smarkm#ifndef NO_ADDRESS
18655682Smarkm#define NO_ADDRESS NO_DATA
18755682Smarkm#endif
18855682Smarkm
18955682Smarkm/*
19055682Smarkm * error code for getaddrinfo
19155682Smarkm */
19255682Smarkm
19355682Smarkm#ifndef EAI_NOERROR
19455682Smarkm#define EAI_NOERROR	0	/* no error */
19555682Smarkm#endif
19655682Smarkm
197127808Snectar#ifndef EAI_NONAME
19855682Smarkm
19955682Smarkm#define EAI_ADDRFAMILY	1	/* address family for nodename not supported */
20055682Smarkm#define EAI_AGAIN	2	/* temporary failure in name resolution */
20155682Smarkm#define EAI_BADFLAGS	3	/* invalid value for ai_flags */
20255682Smarkm#define EAI_FAIL	4	/* non-recoverable failure in name resolution */
20355682Smarkm#define EAI_FAMILY	5	/* ai_family not supported */
20455682Smarkm#define EAI_MEMORY	6	/* memory allocation failure */
20555682Smarkm#define EAI_NODATA	7	/* no address associated with nodename */
20655682Smarkm#define EAI_NONAME	8	/* nodename nor servname provided, or not known */
20755682Smarkm#define EAI_SERVICE	9	/* servname not supported for ai_socktype */
20855682Smarkm#define EAI_SOCKTYPE   10	/* ai_socktype not supported */
20955682Smarkm#define EAI_SYSTEM     11	/* system error returned in errno */
21055682Smarkm
211127808Snectar#endif /* EAI_NONAME */
21255682Smarkm
21355682Smarkm/* flags for getaddrinfo() */
21455682Smarkm
21555682Smarkm#ifndef AI_PASSIVE
21655682Smarkm#define AI_PASSIVE	0x01
21755682Smarkm#define AI_CANONNAME	0x02
218102644Snectar#endif /* AI_PASSIVE */
219102644Snectar
220102644Snectar#ifndef AI_NUMERICHOST
22155682Smarkm#define AI_NUMERICHOST	0x04
222102644Snectar#endif
22355682Smarkm
224233294Sstas#ifndef AI_NUMERICSERV
225233294Sstas#define AI_NUMERICSERV  0x08
226233294Sstas#endif
227233294Sstas
22855682Smarkm/* flags for getnameinfo() */
22955682Smarkm
23055682Smarkm#ifndef NI_DGRAM
23155682Smarkm#define NI_DGRAM	0x01
23255682Smarkm#define NI_NAMEREQD	0x02
23355682Smarkm#define NI_NOFQDN	0x04
23455682Smarkm#define NI_NUMERICHOST	0x08
23555682Smarkm#define NI_NUMERICSERV	0x10
23655682Smarkm#endif
23755682Smarkm
23855682Smarkm/*
23955682Smarkm * constants for getnameinfo
24055682Smarkm */
24155682Smarkm
24255682Smarkm#ifndef NI_MAXHOST
24355682Smarkm#define NI_MAXHOST  1025
24455682Smarkm#define NI_MAXSERV    32
24555682Smarkm#endif
24655682Smarkm
24755682Smarkm/*
24855682Smarkm * constants for inet_ntop
24955682Smarkm */
25055682Smarkm
25155682Smarkm#ifndef INET_ADDRSTRLEN
25255682Smarkm#define INET_ADDRSTRLEN    16
25355682Smarkm#endif
25455682Smarkm
25555682Smarkm#ifndef INET6_ADDRSTRLEN
25655682Smarkm#define INET6_ADDRSTRLEN   46
25755682Smarkm#endif
25855682Smarkm
25955682Smarkm/*
26055682Smarkm * for shutdown(2)
26155682Smarkm */
26255682Smarkm
26355682Smarkm#ifndef SHUT_RD
26455682Smarkm#define SHUT_RD 0
26555682Smarkm#endif
26655682Smarkm
26755682Smarkm#ifndef SHUT_WR
26855682Smarkm#define SHUT_WR 1
26955682Smarkm#endif
27055682Smarkm
27155682Smarkm#ifndef SHUT_RDWR
27255682Smarkm#define SHUT_RDWR 2
27355682Smarkm#endif
27455682Smarkm
27555682Smarkm#ifndef HAVE___ATTRIBUTE__
27655682Smarkm#define __attribute__(x)
27755682Smarkm#endif
27855682Smarkm
27972445SassarROKEN_CPP_START
28072445Sassar
281103423Snectar#ifndef IRIX4 /* fix for compiler bug */
282233294Sstas#ifndef _WIN32
28355682Smarkm#ifdef RETSIGTYPE
28472445Sassartypedef RETSIGTYPE (*SigAction)(int);
28555682SmarkmSigAction signal(int iSig, SigAction pAction); /* BSD compatible */
28655682Smarkm#endif
28755682Smarkm#endif
288233294Sstas#endif
28955682Smarkm
290233294Sstas#define SE_E_UNSPECIFIED (-1)
291233294Sstas#define SE_E_FORKFAILED  (-2)
292233294Sstas#define SE_E_WAITPIDFAILED (-3)
293233294Sstas#define SE_E_EXECTIMEOUT (-4)
294233294Sstas#define SE_E_NOEXEC   126
295233294Sstas#define SE_E_NOTFOUND 127
296233294Sstas
297233294Sstas#define SE_PROCSTATUS(st) (((st) >= 0 && (st) < 126)? st: -1)
298233294Sstas#define SE_PROCSIGNAL(st) (((st) >= 128)? (st) - 128: -1)
299233294Sstas#define SE_IS_ERROR(st) ((st) < 0 || (st) >= 126)
300233294Sstas
301233294Sstas
302233294Sstas#define simple_execve rk_simple_execve
303233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
304178825Sdfrsimple_execve(const char*, char*const[], char*const[]);
30555682Smarkm
306233294Sstas#define simple_execve_timed rk_simple_execve_timed
307233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
308233294Sstassimple_execve_timed(const char *, char *const[],
309233294Sstas		    char *const [], time_t (*)(void *),
310178825Sdfr		    void *, time_t);
311233294Sstas
312233294Sstas#define simple_execvp rk_simple_execvp
313233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
314178825Sdfrsimple_execvp(const char*, char *const[]);
31590926Snectar
316233294Sstas#define simple_execvp_timed rk_simple_execvp_timed
317233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
318233294Sstassimple_execvp_timed(const char *, char *const[],
319178825Sdfr		    time_t (*)(void *), void *, time_t);
320233294Sstas
321233294Sstas#define simple_execlp rk_simple_execlp
322233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
323178825Sdfrsimple_execlp(const char*, ...);
32455682Smarkm
325233294Sstas#define simple_execle rk_simple_execle
326233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
327178825Sdfrsimple_execle(const char*, ...);
32855682Smarkm
329233294Sstas#define wait_for_process rk_wait_for_process
330233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
331178825Sdfrwait_for_process(pid_t);
332178825Sdfr
333233294Sstas#define wait_for_process_timed rk_wait_for_process_timed
334233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
335233294Sstaswait_for_process_timed(pid_t, time_t (*)(void *),
336233294Sstas		       void *, time_t);
337233294Sstas
338233294Sstas#define pipe_execv rk_pipe_execv
339233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
340178825Sdfrpipe_execv(FILE**, FILE**, FILE**, const char*, ...);
341178825Sdfr
342233294Sstas#define print_version rk_print_version
343233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
344178825Sdfrprint_version(const char *);
345178825Sdfr
346233294Sstas#define eread rk_eread
347233294SstasROKEN_LIB_FUNCTION ssize_t ROKEN_LIB_CALL
348178825Sdfreread (int fd, void *buf, size_t nbytes);
349178825Sdfr
350233294Sstas#define ewrite rk_ewrite
351233294SstasROKEN_LIB_FUNCTION ssize_t ROKEN_LIB_CALL
352178825Sdfrewrite (int fd, const void *buf, size_t nbytes);
353178825Sdfr
35490926Snectarstruct hostent;
35590926Snectar
356233294Sstas#define hostent_find_fqdn rk_hostent_find_fqdn
357233294SstasROKEN_LIB_FUNCTION const char * ROKEN_LIB_CALL
358178825Sdfrhostent_find_fqdn (const struct hostent *);
35990926Snectar
360233294Sstas#define esetenv rk_esetenv
361233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
362178825Sdfresetenv(const char *, const char *, int);
36372445Sassar
364233294Sstas#define socket_set_address_and_port rk_socket_set_address_and_port
365233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
366178825Sdfrsocket_set_address_and_port (struct sockaddr *, const void *, int);
36755682Smarkm
368233294Sstas#define socket_addr_size rk_socket_addr_size
369233294SstasROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL
370178825Sdfrsocket_addr_size (const struct sockaddr *);
37155682Smarkm
372233294Sstas#define socket_set_any rk_socket_set_any
373233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
374178825Sdfrsocket_set_any (struct sockaddr *, int);
37555682Smarkm
376233294Sstas#define socket_sockaddr_size rk_socket_sockaddr_size
377233294SstasROKEN_LIB_FUNCTION size_t ROKEN_LIB_CALL
378178825Sdfrsocket_sockaddr_size (const struct sockaddr *);
37955682Smarkm
380233294Sstas#define socket_get_address rk_socket_get_address
381233294SstasROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL
382233294Sstassocket_get_address (const struct sockaddr *);
38355682Smarkm
384233294Sstas#define socket_get_port rk_socket_get_port
385233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
386178825Sdfrsocket_get_port (const struct sockaddr *);
38755682Smarkm
388233294Sstas#define socket_set_port rk_socket_set_port
389233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
390178825Sdfrsocket_set_port (struct sockaddr *, int);
39155682Smarkm
392233294Sstas#define socket_set_portrange rk_socket_set_portrange
393233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
394233294Sstassocket_set_portrange (rk_socket_t, int, int);
39590926Snectar
396233294Sstas#define socket_set_debug rk_socket_set_debug
397233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
398233294Sstassocket_set_debug (rk_socket_t);
39955682Smarkm
400233294Sstas#define socket_set_tos rk_socket_set_tos
401233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
402233294Sstassocket_set_tos (rk_socket_t, int);
40355682Smarkm
404233294Sstas#define socket_set_reuseaddr rk_socket_set_reuseaddr
405233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
406233294Sstassocket_set_reuseaddr (rk_socket_t, int);
40755682Smarkm
408233294Sstas#define socket_set_ipv6only rk_socket_set_ipv6only
409233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
410233294Sstassocket_set_ipv6only (rk_socket_t, int);
411178825Sdfr
412233294Sstas#define socket_to_fd rk_socket_to_fd
413233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
414233294Sstassocket_to_fd(rk_socket_t, int);
415233294Sstas
416233294Sstas#define vstrcollect rk_vstrcollect
417233294SstasROKEN_LIB_FUNCTION char ** ROKEN_LIB_CALL
41857416Smarkmvstrcollect(va_list *ap);
41957416Smarkm
420233294Sstas#define strcollect rk_strcollect
421233294SstasROKEN_LIB_FUNCTION char ** ROKEN_LIB_CALL
42257416Smarkmstrcollect(char *first, ...);
42357416Smarkm
424233294Sstas#define timevalfix rk_timevalfix
425233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
426178825Sdfrtimevalfix(struct timeval *t1);
42757419Smarkm
428233294Sstas#define timevaladd rk_timevaladd
429233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
430178825Sdfrtimevaladd(struct timeval *t1, const struct timeval *t2);
43172445Sassar
432233294Sstas#define timevalsub rk_timevalsub
433233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
434178825Sdfrtimevalsub(struct timeval *t1, const struct timeval *t2);
435178825Sdfr
436233294Sstas#define pid_file_write rk_pid_file_write
437233294SstasROKEN_LIB_FUNCTION char * ROKEN_LIB_CALL
438178825Sdfrpid_file_write (const char *progname);
439178825Sdfr
440233294Sstas#define pid_file_delete rk_pid_file_delete
441233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
442178825Sdfrpid_file_delete (char **);
443178825Sdfr
444233294Sstas#define read_environment rk_read_environment
445233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
44672445Sassarread_environment(const char *file, char ***env);
44772445Sassar
448233294Sstas#define free_environment rk_free_environment
449233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
450178825Sdfrfree_environment(char **);
451178825Sdfr
452233294Sstas#define warnerr rk_warnerr
453233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
454233294Sstasrk_warnerr(int doerrno, const char *fmt, va_list ap)
45572445Sassar    __attribute__ ((format (printf, 2, 0)));
45672445Sassar
457233294SstasROKEN_LIB_FUNCTION void * ROKEN_LIB_CALL
458178825Sdfrrk_realloc(void *, size_t);
459178825Sdfr
460178825Sdfrstruct rk_strpool;
461178825Sdfr
462233294SstasROKEN_LIB_FUNCTION char * ROKEN_LIB_CALL
463178825Sdfrrk_strpoolcollect(struct rk_strpool *);
464178825Sdfr
465233294SstasROKEN_LIB_FUNCTION struct rk_strpool * ROKEN_LIB_CALL
466178825Sdfrrk_strpoolprintf(struct rk_strpool *, const char *, ...)
467178825Sdfr    __attribute__ ((format (printf, 2, 3)));
468178825Sdfr
469233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
470178825Sdfrrk_strpoolfree(struct rk_strpool *);
471178825Sdfr
472233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
473178825Sdfrrk_dumpdata (const char *, const void *, size_t);
474178825Sdfr
475233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
476233294Sstasrk_undumpdata (const char *, void **, size_t *);
477233294Sstas
478233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
479233294Sstasrk_xfree (void *);
480233294Sstas
481233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
482233294Sstasrk_cloexec(int);
483233294Sstas
484233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
485233294Sstasrk_cloexec_file(FILE *);
486233294Sstas
487233294SstasROKEN_LIB_FUNCTION void ROKEN_LIB_CALL
488233294Sstasrk_cloexec_dir(DIR *);
489233294Sstas
490233294SstasROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
491233294Sstasct_memcmp(const void *, const void *, size_t);
492233294Sstas
493233294Sstasvoid ROKEN_LIB_FUNCTION
494233294Sstasrk_random_init(void);
495233294Sstas
49672445SassarROKEN_CPP_END
49772445Sassar
49855682Smarkm#endif /* __ROKEN_COMMON_H__ */
499