roken-common.h revision 178825
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