1 /* 2 * Copyright (c) 1995 - 2005 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * 3. Neither the name of the Institute nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34 /* $Id: roken-common.h 20867 2007-06-03 21:00:45Z lha $ */ 35 36 #ifndef __ROKEN_COMMON_H__ 37 #define __ROKEN_COMMON_H__ 38 39 #ifndef ROKEN_LIB_FUNCTION 40 #ifdef _WIN32 41 #define ROKEN_LIB_FUNCTION _stdcall 42 #else 43 #define ROKEN_LIB_FUNCTION 44 #endif 45 #endif 46 47 #ifdef __cplusplus 48 #define ROKEN_CPP_START extern "C" { 49 #define ROKEN_CPP_END } 50 #else 51 #define ROKEN_CPP_START 52 #define ROKEN_CPP_END 53 #endif 54 55 #ifndef INADDR_NONE 56 #define INADDR_NONE 0xffffffff 57 #endif 58 59 #ifndef INADDR_LOOPBACK 60 #define INADDR_LOOPBACK 0x7f000001 61 #endif 62 63 #ifndef SOMAXCONN 64 #define SOMAXCONN 5 65 #endif 66 67 #ifndef STDIN_FILENO 68 #define STDIN_FILENO 0 69 #endif 70 71 #ifndef STDOUT_FILENO 72 #define STDOUT_FILENO 1 73 #endif 74 75 #ifndef STDERR_FILENO 76 #define STDERR_FILENO 2 77 #endif 78 79 #ifndef max 80 #define max(a,b) (((a)>(b))?(a):(b)) 81 #endif 82 83 #ifndef min 84 #define min(a,b) (((a)<(b))?(a):(b)) 85 #endif 86 87 #ifndef TRUE 88 #define TRUE 1 89 #endif 90 91 #ifndef FALSE 92 #define FALSE 0 93 #endif 94 95 #ifndef LOG_DAEMON 96 #define openlog(id,option,facility) openlog((id),(option)) 97 #define LOG_DAEMON 0 98 #endif 99 #ifndef LOG_ODELAY 100 #define LOG_ODELAY 0 101 #endif 102 #ifndef LOG_NDELAY 103 #define LOG_NDELAY 0x08 104 #endif 105 #ifndef LOG_CONS 106 #define LOG_CONS 0 107 #endif 108 #ifndef LOG_AUTH 109 #define LOG_AUTH 0 110 #endif 111 #ifndef LOG_AUTHPRIV 112 #define LOG_AUTHPRIV LOG_AUTH 113 #endif 114 115 #ifndef F_OK 116 #define F_OK 0 117 #endif 118 119 #ifndef O_ACCMODE 120 #define O_ACCMODE 003 121 #endif 122 123 #ifndef _PATH_DEV 124 #define _PATH_DEV "/dev/" 125 #endif 126 127 #ifndef _PATH_DEVNULL 128 #define _PATH_DEVNULL "/dev/null" 129 #endif 130 131 #ifndef _PATH_HEQUIV 132 #define _PATH_HEQUIV "/etc/hosts.equiv" 133 #endif 134 135 #ifndef _PATH_VARRUN 136 #define _PATH_VARRUN "/var/run/" 137 #endif 138 139 #ifndef _PATH_BSHELL 140 #define _PATH_BSHELL "/bin/sh" 141 #endif 142 143 #ifndef MAXPATHLEN 144 #define MAXPATHLEN (1024+4) 145 #endif 146 147 #ifndef SIG_ERR 148 #define SIG_ERR ((RETSIGTYPE (*)(int))-1) 149 #endif 150 151 /* 152 * error code for getipnodeby{name,addr} 153 */ 154 155 #ifndef HOST_NOT_FOUND 156 #define HOST_NOT_FOUND 1 157 #endif 158 159 #ifndef TRY_AGAIN 160 #define TRY_AGAIN 2 161 #endif 162 163 #ifndef NO_RECOVERY 164 #define NO_RECOVERY 3 165 #endif 166 167 #ifndef NO_DATA 168 #define NO_DATA 4 169 #endif 170 171 #ifndef NO_ADDRESS 172 #define NO_ADDRESS NO_DATA 173 #endif 174 175 /* 176 * error code for getaddrinfo 177 */ 178 179 #ifndef EAI_NOERROR 180 #define EAI_NOERROR 0 /* no error */ 181 #endif 182 183 #ifndef EAI_NONAME 184 185 #define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ 186 #define EAI_AGAIN 2 /* temporary failure in name resolution */ 187 #define EAI_BADFLAGS 3 /* invalid value for ai_flags */ 188 #define EAI_FAIL 4 /* non-recoverable failure in name resolution */ 189 #define EAI_FAMILY 5 /* ai_family not supported */ 190 #define EAI_MEMORY 6 /* memory allocation failure */ 191 #define EAI_NODATA 7 /* no address associated with nodename */ 192 #define EAI_NONAME 8 /* nodename nor servname provided, or not known */ 193 #define EAI_SERVICE 9 /* servname not supported for ai_socktype */ 194 #define EAI_SOCKTYPE 10 /* ai_socktype not supported */ 195 #define EAI_SYSTEM 11 /* system error returned in errno */ 196 197 #endif /* EAI_NONAME */ 198 199 /* flags for getaddrinfo() */ 200 201 #ifndef AI_PASSIVE 202 #define AI_PASSIVE 0x01 203 #define AI_CANONNAME 0x02 204 #endif /* AI_PASSIVE */ 205 206 #ifndef AI_NUMERICHOST 207 #define AI_NUMERICHOST 0x04 208 #endif 209 210 /* flags for getnameinfo() */ 211 212 #ifndef NI_DGRAM 213 #define NI_DGRAM 0x01 214 #define NI_NAMEREQD 0x02 215 #define NI_NOFQDN 0x04 216 #define NI_NUMERICHOST 0x08 217 #define NI_NUMERICSERV 0x10 218 #endif 219 220 /* 221 * constants for getnameinfo 222 */ 223 224 #ifndef NI_MAXHOST 225 #define NI_MAXHOST 1025 226 #define NI_MAXSERV 32 227 #endif 228 229 /* 230 * constants for inet_ntop 231 */ 232 233 #ifndef INET_ADDRSTRLEN 234 #define INET_ADDRSTRLEN 16 235 #endif 236 237 #ifndef INET6_ADDRSTRLEN 238 #define INET6_ADDRSTRLEN 46 239 #endif 240 241 /* 242 * for shutdown(2) 243 */ 244 245 #ifndef SHUT_RD 246 #define SHUT_RD 0 247 #endif 248 249 #ifndef SHUT_WR 250 #define SHUT_WR 1 251 #endif 252 253 #ifndef SHUT_RDWR 254 #define SHUT_RDWR 2 255 #endif 256 257 #ifndef HAVE___ATTRIBUTE__ 258 #define __attribute__(x) 259 #endif 260 261 ROKEN_CPP_START 262 263 #ifndef IRIX4 /* fix for compiler bug */ 264 #ifdef RETSIGTYPE 265 typedef RETSIGTYPE (*SigAction)(int); 266 SigAction signal(int iSig, SigAction pAction); /* BSD compatible */ 267 #endif 268 #endif 269 270 int ROKEN_LIB_FUNCTION 271 simple_execve(const char*, char*const[], char*const[]); 272 273 int ROKEN_LIB_FUNCTION 274 simple_execve_timed(const char *, char *const[], 275 char *const [], time_t (*)(void *), 276 void *, time_t); 277 int ROKEN_LIB_FUNCTION 278 simple_execvp(const char*, char *const[]); 279 280 int ROKEN_LIB_FUNCTION 281 simple_execvp_timed(const char *, char *const[], 282 time_t (*)(void *), void *, time_t); 283 int ROKEN_LIB_FUNCTION 284 simple_execlp(const char*, ...); 285 286 int ROKEN_LIB_FUNCTION 287 simple_execle(const char*, ...); 288 289 int ROKEN_LIB_FUNCTION 290 simple_execl(const char *file, ...); 291 292 int ROKEN_LIB_FUNCTION 293 wait_for_process(pid_t); 294 295 int ROKEN_LIB_FUNCTION 296 wait_for_process_timed(pid_t, time_t (*)(void *), 297 void *, time_t); 298 int ROKEN_LIB_FUNCTION 299 pipe_execv(FILE**, FILE**, FILE**, const char*, ...); 300 301 void ROKEN_LIB_FUNCTION 302 print_version(const char *); 303 304 ssize_t ROKEN_LIB_FUNCTION 305 eread (int fd, void *buf, size_t nbytes); 306 307 ssize_t ROKEN_LIB_FUNCTION 308 ewrite (int fd, const void *buf, size_t nbytes); 309 310 struct hostent; 311 312 const char * ROKEN_LIB_FUNCTION 313 hostent_find_fqdn (const struct hostent *); 314 315 void ROKEN_LIB_FUNCTION 316 esetenv(const char *, const char *, int); 317 318 void ROKEN_LIB_FUNCTION 319 socket_set_address_and_port (struct sockaddr *, const void *, int); 320 321 size_t ROKEN_LIB_FUNCTION 322 socket_addr_size (const struct sockaddr *); 323 324 void ROKEN_LIB_FUNCTION 325 socket_set_any (struct sockaddr *, int); 326 327 size_t ROKEN_LIB_FUNCTION 328 socket_sockaddr_size (const struct sockaddr *); 329 330 void * ROKEN_LIB_FUNCTION 331 socket_get_address (struct sockaddr *); 332 333 int ROKEN_LIB_FUNCTION 334 socket_get_port (const struct sockaddr *); 335 336 void ROKEN_LIB_FUNCTION 337 socket_set_port (struct sockaddr *, int); 338 339 void ROKEN_LIB_FUNCTION 340 socket_set_portrange (int, int, int); 341 342 void ROKEN_LIB_FUNCTION 343 socket_set_debug (int); 344 345 void ROKEN_LIB_FUNCTION 346 socket_set_tos (int, int); 347 348 void ROKEN_LIB_FUNCTION 349 socket_set_reuseaddr (int, int); 350 351 void ROKEN_LIB_FUNCTION 352 socket_set_ipv6only (int, int); 353 354 char ** ROKEN_LIB_FUNCTION 355 vstrcollect(va_list *ap); 356 357 char ** ROKEN_LIB_FUNCTION 358 strcollect(char *first, ...); 359 360 void ROKEN_LIB_FUNCTION 361 timevalfix(struct timeval *t1); 362 363 void ROKEN_LIB_FUNCTION 364 timevaladd(struct timeval *t1, const struct timeval *t2); 365 366 void ROKEN_LIB_FUNCTION 367 timevalsub(struct timeval *t1, const struct timeval *t2); 368 369 char *ROKEN_LIB_FUNCTION 370 pid_file_write (const char *progname); 371 372 void ROKEN_LIB_FUNCTION 373 pid_file_delete (char **); 374 375 int ROKEN_LIB_FUNCTION 376 read_environment(const char *file, char ***env); 377 378 void ROKEN_LIB_FUNCTION 379 free_environment(char **); 380 381 void ROKEN_LIB_FUNCTION 382 warnerr(int doerrno, const char *fmt, va_list ap) 383 __attribute__ ((format (printf, 2, 0))); 384 385 void * ROKEN_LIB_FUNCTION 386 rk_realloc(void *, size_t); 387 388 struct rk_strpool; 389 390 char * ROKEN_LIB_FUNCTION 391 rk_strpoolcollect(struct rk_strpool *); 392 393 struct rk_strpool * ROKEN_LIB_FUNCTION 394 rk_strpoolprintf(struct rk_strpool *, const char *, ...) 395 __attribute__ ((format (printf, 2, 3))); 396 397 void ROKEN_LIB_FUNCTION 398 rk_strpoolfree(struct rk_strpool *); 399 400 void ROKEN_LIB_FUNCTION 401 rk_dumpdata (const char *, const void *, size_t); 402 403 ROKEN_CPP_END 404 405 #endif /* __ROKEN_COMMON_H__ */ 406