155682Smarkm/*
2178825Sdfr * Copyright (c) 1995 - 2005 Kungliga Tekniska H�gskolan
355682Smarkm * (Royal Institute of Technology, Stockholm, Sweden).
455682Smarkm * All rights reserved.
555682Smarkm *
655682Smarkm * Redistribution and use in source and binary forms, with or without
755682Smarkm * modification, are permitted provided that the following conditions
855682Smarkm * are met:
955682Smarkm *
1055682Smarkm * 1. Redistributions of source code must retain the above copyright
1155682Smarkm *    notice, this list of conditions and the following disclaimer.
1255682Smarkm *
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.
1655682Smarkm *
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.
2055682Smarkm *
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
34178825Sdfr/* $Id: roken-common.h 20867 2007-06-03 21:00:45Z lha $ */
3555682Smarkm
3655682Smarkm#ifndef __ROKEN_COMMON_H__
3755682Smarkm#define __ROKEN_COMMON_H__
3855682Smarkm
39178825Sdfr#ifndef ROKEN_LIB_FUNCTION
40178825Sdfr#ifdef _WIN32
41178825Sdfr#define ROKEN_LIB_FUNCTION _stdcall
42178825Sdfr#else
43178825Sdfr#define ROKEN_LIB_FUNCTION
44178825Sdfr#endif
45178825Sdfr#endif
46178825Sdfr
4772445Sassar#ifdef __cplusplus
4872445Sassar#define ROKEN_CPP_START	extern "C" {
4972445Sassar#define ROKEN_CPP_END	}
5072445Sassar#else
5172445Sassar#define ROKEN_CPP_START
5272445Sassar#define ROKEN_CPP_END
5372445Sassar#endif
5472445Sassar
5555682Smarkm#ifndef INADDR_NONE
5655682Smarkm#define INADDR_NONE 0xffffffff
5755682Smarkm#endif
5855682Smarkm
5955682Smarkm#ifndef INADDR_LOOPBACK
6055682Smarkm#define INADDR_LOOPBACK 0x7f000001
6155682Smarkm#endif
6255682Smarkm
6355682Smarkm#ifndef SOMAXCONN
6455682Smarkm#define SOMAXCONN 5
6555682Smarkm#endif
6655682Smarkm
6755682Smarkm#ifndef STDIN_FILENO
6855682Smarkm#define STDIN_FILENO 0
6955682Smarkm#endif
7055682Smarkm
7155682Smarkm#ifndef STDOUT_FILENO
7255682Smarkm#define STDOUT_FILENO 1
7355682Smarkm#endif
7455682Smarkm
7555682Smarkm#ifndef STDERR_FILENO
7655682Smarkm#define STDERR_FILENO 2
7755682Smarkm#endif
7855682Smarkm
7955682Smarkm#ifndef max
8055682Smarkm#define max(a,b) (((a)>(b))?(a):(b))
8155682Smarkm#endif
8255682Smarkm
8355682Smarkm#ifndef min
8455682Smarkm#define min(a,b) (((a)<(b))?(a):(b))
8555682Smarkm#endif
8655682Smarkm
8755682Smarkm#ifndef TRUE
8855682Smarkm#define TRUE 1
8955682Smarkm#endif
9055682Smarkm
9155682Smarkm#ifndef FALSE
9255682Smarkm#define FALSE 0
9355682Smarkm#endif
9455682Smarkm
9555682Smarkm#ifndef LOG_DAEMON
9655682Smarkm#define openlog(id,option,facility) openlog((id),(option))
9755682Smarkm#define	LOG_DAEMON	0
9855682Smarkm#endif
9955682Smarkm#ifndef LOG_ODELAY
10055682Smarkm#define LOG_ODELAY 0
10155682Smarkm#endif
10255682Smarkm#ifndef LOG_NDELAY
10355682Smarkm#define LOG_NDELAY 0x08
10455682Smarkm#endif
10555682Smarkm#ifndef LOG_CONS
10655682Smarkm#define LOG_CONS 0
10755682Smarkm#endif
10855682Smarkm#ifndef LOG_AUTH
10955682Smarkm#define LOG_AUTH 0
11055682Smarkm#endif
11155682Smarkm#ifndef LOG_AUTHPRIV
11255682Smarkm#define LOG_AUTHPRIV LOG_AUTH
11355682Smarkm#endif
11455682Smarkm
11555682Smarkm#ifndef F_OK
11655682Smarkm#define F_OK 0
11755682Smarkm#endif
11855682Smarkm
11955682Smarkm#ifndef O_ACCMODE
12055682Smarkm#define O_ACCMODE	003
12155682Smarkm#endif
12255682Smarkm
12357416Smarkm#ifndef _PATH_DEV
12457416Smarkm#define _PATH_DEV "/dev/"
12557416Smarkm#endif
12657416Smarkm
12755682Smarkm#ifndef _PATH_DEVNULL
12855682Smarkm#define _PATH_DEVNULL "/dev/null"
12955682Smarkm#endif
13055682Smarkm
13155682Smarkm#ifndef _PATH_HEQUIV
13255682Smarkm#define _PATH_HEQUIV "/etc/hosts.equiv"
13355682Smarkm#endif
13455682Smarkm
13572445Sassar#ifndef _PATH_VARRUN
13672445Sassar#define _PATH_VARRUN "/var/run/"
13772445Sassar#endif
13872445Sassar
13972445Sassar#ifndef _PATH_BSHELL
14072445Sassar#define _PATH_BSHELL "/bin/sh"
14172445Sassar#endif
14272445Sassar
14355682Smarkm#ifndef MAXPATHLEN
14455682Smarkm#define MAXPATHLEN (1024+4)
14555682Smarkm#endif
14655682Smarkm
14755682Smarkm#ifndef SIG_ERR
14872445Sassar#define SIG_ERR ((RETSIGTYPE (*)(int))-1)
14955682Smarkm#endif
15055682Smarkm
15155682Smarkm/*
15255682Smarkm * error code for getipnodeby{name,addr}
15355682Smarkm */
15455682Smarkm
15555682Smarkm#ifndef HOST_NOT_FOUND
15655682Smarkm#define HOST_NOT_FOUND 1
15755682Smarkm#endif
15855682Smarkm
15955682Smarkm#ifndef TRY_AGAIN
16055682Smarkm#define TRY_AGAIN 2
16155682Smarkm#endif
16255682Smarkm
16355682Smarkm#ifndef NO_RECOVERY
16455682Smarkm#define NO_RECOVERY 3
16555682Smarkm#endif
16655682Smarkm
16755682Smarkm#ifndef NO_DATA
16855682Smarkm#define NO_DATA 4
16955682Smarkm#endif
17055682Smarkm
17155682Smarkm#ifndef NO_ADDRESS
17255682Smarkm#define NO_ADDRESS NO_DATA
17355682Smarkm#endif
17455682Smarkm
17555682Smarkm/*
17655682Smarkm * error code for getaddrinfo
17755682Smarkm */
17855682Smarkm
17955682Smarkm#ifndef EAI_NOERROR
18055682Smarkm#define EAI_NOERROR	0	/* no error */
18155682Smarkm#endif
18255682Smarkm
183127808Snectar#ifndef EAI_NONAME
18455682Smarkm
18555682Smarkm#define EAI_ADDRFAMILY	1	/* address family for nodename not supported */
18655682Smarkm#define EAI_AGAIN	2	/* temporary failure in name resolution */
18755682Smarkm#define EAI_BADFLAGS	3	/* invalid value for ai_flags */
18855682Smarkm#define EAI_FAIL	4	/* non-recoverable failure in name resolution */
18955682Smarkm#define EAI_FAMILY	5	/* ai_family not supported */
19055682Smarkm#define EAI_MEMORY	6	/* memory allocation failure */
19155682Smarkm#define EAI_NODATA	7	/* no address associated with nodename */
19255682Smarkm#define EAI_NONAME	8	/* nodename nor servname provided, or not known */
19355682Smarkm#define EAI_SERVICE	9	/* servname not supported for ai_socktype */
19455682Smarkm#define EAI_SOCKTYPE   10	/* ai_socktype not supported */
19555682Smarkm#define EAI_SYSTEM     11	/* system error returned in errno */
19655682Smarkm
197127808Snectar#endif /* EAI_NONAME */
19855682Smarkm
19955682Smarkm/* flags for getaddrinfo() */
20055682Smarkm
20155682Smarkm#ifndef AI_PASSIVE
20255682Smarkm#define AI_PASSIVE	0x01
20355682Smarkm#define AI_CANONNAME	0x02
204102644Snectar#endif /* AI_PASSIVE */
205102644Snectar
206102644Snectar#ifndef AI_NUMERICHOST
20755682Smarkm#define AI_NUMERICHOST	0x04
208102644Snectar#endif
20955682Smarkm
21055682Smarkm/* flags for getnameinfo() */
21155682Smarkm
21255682Smarkm#ifndef NI_DGRAM
21355682Smarkm#define NI_DGRAM	0x01
21455682Smarkm#define NI_NAMEREQD	0x02
21555682Smarkm#define NI_NOFQDN	0x04
21655682Smarkm#define NI_NUMERICHOST	0x08
21755682Smarkm#define NI_NUMERICSERV	0x10
21855682Smarkm#endif
21955682Smarkm
22055682Smarkm/*
22155682Smarkm * constants for getnameinfo
22255682Smarkm */
22355682Smarkm
22455682Smarkm#ifndef NI_MAXHOST
22555682Smarkm#define NI_MAXHOST  1025
22655682Smarkm#define NI_MAXSERV    32
22755682Smarkm#endif
22855682Smarkm
22955682Smarkm/*
23055682Smarkm * constants for inet_ntop
23155682Smarkm */
23255682Smarkm
23355682Smarkm#ifndef INET_ADDRSTRLEN
23455682Smarkm#define INET_ADDRSTRLEN    16
23555682Smarkm#endif
23655682Smarkm
23755682Smarkm#ifndef INET6_ADDRSTRLEN
23855682Smarkm#define INET6_ADDRSTRLEN   46
23955682Smarkm#endif
24055682Smarkm
24155682Smarkm/*
24255682Smarkm * for shutdown(2)
24355682Smarkm */
24455682Smarkm
24555682Smarkm#ifndef SHUT_RD
24655682Smarkm#define SHUT_RD 0
24755682Smarkm#endif
24855682Smarkm
24955682Smarkm#ifndef SHUT_WR
25055682Smarkm#define SHUT_WR 1
25155682Smarkm#endif
25255682Smarkm
25355682Smarkm#ifndef SHUT_RDWR
25455682Smarkm#define SHUT_RDWR 2
25555682Smarkm#endif
25655682Smarkm
25755682Smarkm#ifndef HAVE___ATTRIBUTE__
25855682Smarkm#define __attribute__(x)
25955682Smarkm#endif
26055682Smarkm
26172445SassarROKEN_CPP_START
26272445Sassar
263103423Snectar#ifndef IRIX4 /* fix for compiler bug */
26455682Smarkm#ifdef RETSIGTYPE
26572445Sassartypedef RETSIGTYPE (*SigAction)(int);
26655682SmarkmSigAction signal(int iSig, SigAction pAction); /* BSD compatible */
26755682Smarkm#endif
26855682Smarkm#endif
26955682Smarkm
270178825Sdfrint ROKEN_LIB_FUNCTION
271178825Sdfrsimple_execve(const char*, char*const[], char*const[]);
27255682Smarkm
273178825Sdfrint ROKEN_LIB_FUNCTION
274178825Sdfrsimple_execve_timed(const char *, char *const[],
275178825Sdfr		    char *const [], time_t (*)(void *),
276178825Sdfr		    void *, time_t);
277178825Sdfrint ROKEN_LIB_FUNCTION
278178825Sdfrsimple_execvp(const char*, char *const[]);
27990926Snectar
280178825Sdfrint ROKEN_LIB_FUNCTION
281178825Sdfrsimple_execvp_timed(const char *, char *const[],
282178825Sdfr		    time_t (*)(void *), void *, time_t);
283178825Sdfrint ROKEN_LIB_FUNCTION
284178825Sdfrsimple_execlp(const char*, ...);
28555682Smarkm
286178825Sdfrint ROKEN_LIB_FUNCTION
287178825Sdfrsimple_execle(const char*, ...);
28855682Smarkm
289178825Sdfrint ROKEN_LIB_FUNCTION
290178825Sdfrsimple_execl(const char *file, ...);
291178825Sdfr
292178825Sdfrint ROKEN_LIB_FUNCTION
293178825Sdfrwait_for_process(pid_t);
294178825Sdfr
295178825Sdfrint ROKEN_LIB_FUNCTION
296178825Sdfrwait_for_process_timed(pid_t, time_t (*)(void *),
297178825Sdfr					      void *, time_t);
298178825Sdfrint ROKEN_LIB_FUNCTION
299178825Sdfrpipe_execv(FILE**, FILE**, FILE**, const char*, ...);
300178825Sdfr
301178825Sdfrvoid ROKEN_LIB_FUNCTION
302178825Sdfrprint_version(const char *);
303178825Sdfr
304178825Sdfrssize_t ROKEN_LIB_FUNCTION
305178825Sdfreread (int fd, void *buf, size_t nbytes);
306178825Sdfr
307178825Sdfrssize_t ROKEN_LIB_FUNCTION
308178825Sdfrewrite (int fd, const void *buf, size_t nbytes);
309178825Sdfr
31090926Snectarstruct hostent;
31190926Snectar
312178825Sdfrconst char * ROKEN_LIB_FUNCTION
313178825Sdfrhostent_find_fqdn (const struct hostent *);
31490926Snectar
315178825Sdfrvoid ROKEN_LIB_FUNCTION
316178825Sdfresetenv(const char *, const char *, int);
31772445Sassar
318178825Sdfrvoid ROKEN_LIB_FUNCTION
319178825Sdfrsocket_set_address_and_port (struct sockaddr *, const void *, int);
32055682Smarkm
321178825Sdfrsize_t ROKEN_LIB_FUNCTION
322178825Sdfrsocket_addr_size (const struct sockaddr *);
32355682Smarkm
324178825Sdfrvoid ROKEN_LIB_FUNCTION
325178825Sdfrsocket_set_any (struct sockaddr *, int);
32655682Smarkm
327178825Sdfrsize_t ROKEN_LIB_FUNCTION
328178825Sdfrsocket_sockaddr_size (const struct sockaddr *);
32955682Smarkm
330178825Sdfrvoid * ROKEN_LIB_FUNCTION
331178825Sdfrsocket_get_address (struct sockaddr *);
33255682Smarkm
333178825Sdfrint ROKEN_LIB_FUNCTION
334178825Sdfrsocket_get_port (const struct sockaddr *);
33555682Smarkm
336178825Sdfrvoid ROKEN_LIB_FUNCTION
337178825Sdfrsocket_set_port (struct sockaddr *, int);
33855682Smarkm
339178825Sdfrvoid ROKEN_LIB_FUNCTION
340178825Sdfrsocket_set_portrange (int, int, int);
34190926Snectar
342178825Sdfrvoid ROKEN_LIB_FUNCTION
343178825Sdfrsocket_set_debug (int);
34455682Smarkm
345178825Sdfrvoid ROKEN_LIB_FUNCTION
346178825Sdfrsocket_set_tos (int, int);
34755682Smarkm
348178825Sdfrvoid ROKEN_LIB_FUNCTION
349178825Sdfrsocket_set_reuseaddr (int, int);
35055682Smarkm
351178825Sdfrvoid ROKEN_LIB_FUNCTION
352178825Sdfrsocket_set_ipv6only (int, int);
353178825Sdfr
354178825Sdfrchar ** ROKEN_LIB_FUNCTION
35557416Smarkmvstrcollect(va_list *ap);
35657416Smarkm
357178825Sdfrchar ** ROKEN_LIB_FUNCTION
35857416Smarkmstrcollect(char *first, ...);
35957416Smarkm
360178825Sdfrvoid ROKEN_LIB_FUNCTION
361178825Sdfrtimevalfix(struct timeval *t1);
36257419Smarkm
363178825Sdfrvoid ROKEN_LIB_FUNCTION
364178825Sdfrtimevaladd(struct timeval *t1, const struct timeval *t2);
36572445Sassar
366178825Sdfrvoid ROKEN_LIB_FUNCTION
367178825Sdfrtimevalsub(struct timeval *t1, const struct timeval *t2);
368178825Sdfr
369178825Sdfrchar *ROKEN_LIB_FUNCTION
370178825Sdfrpid_file_write (const char *progname);
371178825Sdfr
372178825Sdfrvoid ROKEN_LIB_FUNCTION
373178825Sdfrpid_file_delete (char **);
374178825Sdfr
375178825Sdfrint ROKEN_LIB_FUNCTION
37672445Sassarread_environment(const char *file, char ***env);
37772445Sassar
378178825Sdfrvoid ROKEN_LIB_FUNCTION
379178825Sdfrfree_environment(char **);
380178825Sdfr
381178825Sdfrvoid ROKEN_LIB_FUNCTION
382178825Sdfrwarnerr(int doerrno, const char *fmt, va_list ap)
38372445Sassar    __attribute__ ((format (printf, 2, 0)));
38472445Sassar
385178825Sdfrvoid * ROKEN_LIB_FUNCTION
386178825Sdfrrk_realloc(void *, size_t);
387178825Sdfr
388178825Sdfrstruct rk_strpool;
389178825Sdfr
390178825Sdfrchar * ROKEN_LIB_FUNCTION
391178825Sdfrrk_strpoolcollect(struct rk_strpool *);
392178825Sdfr
393178825Sdfrstruct rk_strpool * ROKEN_LIB_FUNCTION
394178825Sdfrrk_strpoolprintf(struct rk_strpool *, const char *, ...)
395178825Sdfr    __attribute__ ((format (printf, 2, 3)));
396178825Sdfr
397178825Sdfrvoid ROKEN_LIB_FUNCTION
398178825Sdfrrk_strpoolfree(struct rk_strpool *);
399178825Sdfr
400178825Sdfrvoid ROKEN_LIB_FUNCTION
401178825Sdfrrk_dumpdata (const char *, const void *, size_t);
402178825Sdfr
40372445SassarROKEN_CPP_END
40472445Sassar
40555682Smarkm#endif /* __ROKEN_COMMON_H__ */
406