defines.h revision 106121
1249746Sdteske#ifndef _DEFINES_H 2252980Sdteske#define _DEFINES_H 3238438Sdteske 4238438Sdteske/* $Id: defines.h,v 1.96 2002/09/26 00:38:48 tim Exp $ */ 5238438Sdteske 6238438Sdteske 7238438Sdteske/* Constants */ 8238438Sdteske 9238438Sdteske#ifndef SHUT_RDWR 10238438Sdteskeenum 11238438Sdteske{ 12238438Sdteske SHUT_RD = 0, /* No more receptions. */ 13238438Sdteske SHUT_WR, /* No more transmissions. */ 14252987Sdteske SHUT_RDWR /* No more receptions or transmissions. */ 15238438Sdteske}; 16238438Sdteske# define SHUT_RD SHUT_RD 17238438Sdteske# define SHUT_WR SHUT_WR 18252987Sdteske# define SHUT_RDWR SHUT_RDWR 19238438Sdteske#endif 20238438Sdteske 21238438Sdteske#ifndef IPTOS_LOWDELAY 22238438Sdteske# define IPTOS_LOWDELAY 0x10 23238438Sdteske# define IPTOS_THROUGHPUT 0x08 24238438Sdteske# define IPTOS_RELIABILITY 0x04 25238438Sdteske# define IPTOS_LOWCOST 0x02 26238438Sdteske# define IPTOS_MINCOST IPTOS_LOWCOST 27238438Sdteske#endif /* IPTOS_LOWDELAY */ 28238438Sdteske 29238438Sdteske#ifndef MAXPATHLEN 30249746Sdteske# ifdef PATH_MAX 31249746Sdteske# define MAXPATHLEN PATH_MAX 32249746Sdteske# else /* PATH_MAX */ 33249746Sdteske# define MAXPATHLEN 64 /* Should be safe */ 34249746Sdteske# endif /* PATH_MAX */ 35238438Sdteske#endif /* MAXPATHLEN */ 36238438Sdteske 37238438Sdteske#ifndef STDIN_FILENO 38# define STDIN_FILENO 0 39#endif 40#ifndef STDOUT_FILENO 41# define STDOUT_FILENO 1 42#endif 43#ifndef STDERR_FILENO 44# define STDERR_FILENO 2 45#endif 46 47#ifndef NGROUPS_MAX /* Disable groupaccess if NGROUP_MAX is not set */ 48#ifdef NGROUPS 49#define NGROUPS_MAX NGROUPS 50#else 51#define NGROUPS_MAX 0 52#endif 53#endif 54 55#ifndef O_NONBLOCK /* Non Blocking Open */ 56# define O_NONBLOCK 00004 57#endif 58 59#ifndef S_ISDIR 60# define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR)) 61#endif /* S_ISDIR */ 62 63#ifndef S_ISREG 64# define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG)) 65#endif /* S_ISREG */ 66 67#ifndef S_ISLNK 68# define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) 69#endif /* S_ISLNK */ 70 71#ifndef S_IXUSR 72# define S_IXUSR 0000100 /* execute/search permission, */ 73# define S_IXGRP 0000010 /* execute/search permission, */ 74# define S_IXOTH 0000001 /* execute/search permission, */ 75# define _S_IWUSR 0000200 /* write permission, */ 76# define S_IWUSR _S_IWUSR /* write permission, owner */ 77# define S_IWGRP 0000020 /* write permission, group */ 78# define S_IWOTH 0000002 /* write permission, other */ 79# define S_IRUSR 0000400 /* read permission, owner */ 80# define S_IRGRP 0000040 /* read permission, group */ 81# define S_IROTH 0000004 /* read permission, other */ 82# define S_IRWXU 0000700 /* read, write, execute */ 83# define S_IRWXG 0000070 /* read, write, execute */ 84# define S_IRWXO 0000007 /* read, write, execute */ 85#endif /* S_IXUSR */ 86 87#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) 88#define MAP_ANON MAP_ANONYMOUS 89#endif 90 91#ifndef MAP_FAILED 92# define MAP_FAILED ((void *)-1) 93#endif 94 95/* *-*-nto-qnx doesn't define this constant in the system headers */ 96#ifdef MISSING_NFDBITS 97# define NFDBITS (8 * sizeof(unsigned long)) 98#endif 99 100/* 101SCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but 102including rpc/rpc.h breaks Solaris 6 103*/ 104#ifndef INADDR_LOOPBACK 105#define INADDR_LOOPBACK ((u_long)0x7f000001) 106#endif 107 108/* Types */ 109 110/* If sys/types.h does not supply intXX_t, supply them ourselves */ 111/* (or die trying) */ 112 113 114#ifndef HAVE_U_INT 115typedef unsigned int u_int; 116#endif 117 118#ifndef HAVE_INTXX_T 119# if (SIZEOF_CHAR == 1) 120typedef char int8_t; 121# else 122# error "8 bit int type not found." 123# endif 124# if (SIZEOF_SHORT_INT == 2) 125typedef short int int16_t; 126# else 127# ifdef _UNICOS 128# if (SIZEOF_SHORT_INT == 4) 129typedef short int16_t; 130# else 131typedef long int16_t; 132# endif 133# else 134# error "16 bit int type not found." 135# endif /* _UNICOS */ 136# endif 137# if (SIZEOF_INT == 4) 138typedef int int32_t; 139# else 140# ifdef _UNICOS 141typedef long int32_t; 142# else 143# error "32 bit int type not found." 144# endif /* _UNICOS */ 145# endif 146#endif 147 148/* If sys/types.h does not supply u_intXX_t, supply them ourselves */ 149#ifndef HAVE_U_INTXX_T 150# ifdef HAVE_UINTXX_T 151typedef uint8_t u_int8_t; 152typedef uint16_t u_int16_t; 153typedef uint32_t u_int32_t; 154# define HAVE_U_INTXX_T 1 155# else 156# if (SIZEOF_CHAR == 1) 157typedef unsigned char u_int8_t; 158# else 159# error "8 bit int type not found." 160# endif 161# if (SIZEOF_SHORT_INT == 2) 162typedef unsigned short int u_int16_t; 163# else 164# ifdef _UNICOS 165# if (SIZEOF_SHORT_INT == 4) 166typedef unsigned short u_int16_t; 167# else 168typedef unsigned long u_int16_t; 169# endif 170# else 171# error "16 bit int type not found." 172# endif 173# endif 174# if (SIZEOF_INT == 4) 175typedef unsigned int u_int32_t; 176# else 177# ifdef _UNICOS 178typedef unsigned long u_int32_t; 179# else 180# error "32 bit int type not found." 181# endif 182# endif 183# endif 184#define __BIT_TYPES_DEFINED__ 185#endif 186 187/* 64-bit types */ 188#ifndef HAVE_INT64_T 189# if (SIZEOF_LONG_INT == 8) 190typedef long int int64_t; 191# define HAVE_INT64_T 1 192# else 193# if (SIZEOF_LONG_LONG_INT == 8) 194typedef long long int int64_t; 195# define HAVE_INT64_T 1 196# endif 197# endif 198#endif 199#ifndef HAVE_U_INT64_T 200# if (SIZEOF_LONG_INT == 8) 201typedef unsigned long int u_int64_t; 202# define HAVE_U_INT64_T 1 203# else 204# if (SIZEOF_LONG_LONG_INT == 8) 205typedef unsigned long long int u_int64_t; 206# define HAVE_U_INT64_T 1 207# endif 208# endif 209#endif 210#if !defined(HAVE_LONG_LONG_INT) && (SIZEOF_LONG_LONG_INT == 8) 211# define HAVE_LONG_LONG_INT 1 212#endif 213 214#ifndef HAVE_U_CHAR 215typedef unsigned char u_char; 216# define HAVE_U_CHAR 217#endif /* HAVE_U_CHAR */ 218 219#ifndef SIZE_T_MAX 220#define SIZE_T_MAX ULONG_MAX 221#endif /* SIZE_T_MAX */ 222 223#ifndef HAVE_SIZE_T 224typedef unsigned int size_t; 225# define HAVE_SIZE_T 226#endif /* HAVE_SIZE_T */ 227 228#ifndef HAVE_SSIZE_T 229typedef int ssize_t; 230# define HAVE_SSIZE_T 231#endif /* HAVE_SSIZE_T */ 232 233#ifndef HAVE_CLOCK_T 234typedef long clock_t; 235# define HAVE_CLOCK_T 236#endif /* HAVE_CLOCK_T */ 237 238#ifndef HAVE_SA_FAMILY_T 239typedef int sa_family_t; 240# define HAVE_SA_FAMILY_T 241#endif /* HAVE_SA_FAMILY_T */ 242 243#ifndef HAVE_PID_T 244typedef int pid_t; 245# define HAVE_PID_T 246#endif /* HAVE_PID_T */ 247 248#ifndef HAVE_SIG_ATOMIC_T 249typedef int sig_atomic_t; 250# define HAVE_SIG_ATOMIC_T 251#endif /* HAVE_SIG_ATOMIC_T */ 252 253#ifndef HAVE_MODE_T 254typedef int mode_t; 255# define HAVE_MODE_T 256#endif /* HAVE_MODE_T */ 257 258#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS) 259# define ss_family __ss_family 260#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */ 261 262#ifndef HAVE_SYS_UN_H 263struct sockaddr_un { 264 short sun_family; /* AF_UNIX */ 265 char sun_path[108]; /* path name (gag) */ 266}; 267#endif /* HAVE_SYS_UN_H */ 268 269#if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE) 270#define _STRUCT_WINSIZE 271struct winsize { 272 unsigned short ws_row; /* rows, in characters */ 273 unsigned short ws_col; /* columns, in character */ 274 unsigned short ws_xpixel; /* horizontal size, pixels */ 275 unsigned short ws_ypixel; /* vertical size, pixels */ 276}; 277#endif 278 279/* *-*-nto-qnx does not define this type in the system headers */ 280#ifdef MISSING_FD_MASK 281 typedef unsigned long int fd_mask; 282#endif 283 284/* Paths */ 285 286#ifndef _PATH_BSHELL 287# define _PATH_BSHELL "/bin/sh" 288#endif 289#ifndef _PATH_CSHELL 290# define _PATH_CSHELL "/bin/csh" 291#endif 292#ifndef _PATH_SHELLS 293# define _PATH_SHELLS "/etc/shells" 294#endif 295 296#ifdef USER_PATH 297# ifdef _PATH_STDPATH 298# undef _PATH_STDPATH 299# endif 300# define _PATH_STDPATH USER_PATH 301#endif 302 303#ifndef _PATH_STDPATH 304# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin" 305#endif 306 307#ifndef _PATH_DEVNULL 308# define _PATH_DEVNULL "/dev/null" 309#endif 310 311#ifndef MAIL_DIRECTORY 312# define MAIL_DIRECTORY "/var/spool/mail" 313#endif 314 315#ifndef MAILDIR 316# define MAILDIR MAIL_DIRECTORY 317#endif 318 319#if !defined(_PATH_MAILDIR) && defined(MAILDIR) 320# define _PATH_MAILDIR MAILDIR 321#endif /* !defined(_PATH_MAILDIR) && defined(MAILDIR) */ 322 323#ifndef _PATH_NOLOGIN 324# define _PATH_NOLOGIN "/etc/nologin" 325#endif 326 327/* Define this to be the path of the xauth program. */ 328#ifdef XAUTH_PATH 329#define _PATH_XAUTH XAUTH_PATH 330#endif /* XAUTH_PATH */ 331 332/* derived from XF4/xc/lib/dps/Xlibnet.h */ 333#ifndef X_UNIX_PATH 334# ifdef __hpux 335# define X_UNIX_PATH "/var/spool/sockets/X11/%u" 336# else 337# define X_UNIX_PATH "/tmp/.X11-unix/X%u" 338# endif 339#endif /* X_UNIX_PATH */ 340#define _PATH_UNIX_X X_UNIX_PATH 341 342#ifndef _PATH_TTY 343# define _PATH_TTY "/dev/tty" 344#endif 345 346/* Macros */ 347 348#if defined(HAVE_LOGIN_GETCAPBOOL) && defined(HAVE_LOGIN_CAP_H) 349# define HAVE_LOGIN_CAP 350#endif 351 352#ifndef MAX 353# define MAX(a,b) (((a)>(b))?(a):(b)) 354# define MIN(a,b) (((a)<(b))?(a):(b)) 355#endif 356 357#ifndef roundup 358# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) 359#endif 360 361#ifndef timersub 362#define timersub(a, b, result) \ 363 do { \ 364 (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ 365 (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ 366 if ((result)->tv_usec < 0) { \ 367 --(result)->tv_sec; \ 368 (result)->tv_usec += 1000000; \ 369 } \ 370 } while (0) 371#endif 372 373#ifndef __P 374# define __P(x) x 375#endif 376 377#if !defined(IN6_IS_ADDR_V4MAPPED) 378# define IN6_IS_ADDR_V4MAPPED(a) \ 379 ((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \ 380 (((u_int32_t *) (a))[2] == htonl (0xffff))) 381#endif /* !defined(IN6_IS_ADDR_V4MAPPED) */ 382 383#if !defined(__GNUC__) || (__GNUC__ < 2) 384# define __attribute__(x) 385#endif /* !defined(__GNUC__) || (__GNUC__ < 2) */ 386 387/* *-*-nto-qnx doesn't define this macro in the system headers */ 388#ifdef MISSING_HOWMANY 389# define howmany(x,y) (((x)+((y)-1))/(y)) 390#endif 391 392#ifndef OSSH_ALIGNBYTES 393#define OSSH_ALIGNBYTES (sizeof(int) - 1) 394#endif 395#ifndef __CMSG_ALIGN 396#define __CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES) 397#endif 398 399/* Length of the contents of a control message of length len */ 400#ifndef CMSG_LEN 401#define CMSG_LEN(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) 402#endif 403 404/* Length of the space taken up by a padded control message of length len */ 405#ifndef CMSG_SPACE 406#define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len)) 407#endif 408 409/* Function replacement / compatibility hacks */ 410 411#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO)) 412# define HAVE_GETADDRINFO 413#endif 414 415#ifndef HAVE_GETOPT_OPTRESET 416# undef getopt 417# undef opterr 418# undef optind 419# undef optopt 420# undef optreset 421# undef optarg 422# define getopt(ac, av, o) BSDgetopt(ac, av, o) 423# define opterr BSDopterr 424# define optind BSDoptind 425# define optopt BSDoptopt 426# define optreset BSDoptreset 427# define optarg BSDoptarg 428#endif 429 430/* In older versions of libpam, pam_strerror takes a single argument */ 431#ifdef HAVE_OLD_PAM 432# define PAM_STRERROR(a,b) pam_strerror((b)) 433#else 434# define PAM_STRERROR(a,b) pam_strerror((a),(b)) 435#endif 436 437#ifdef PAM_SUN_CODEBASE 438# define PAM_MSG_MEMBER(msg, n, member) ((*(msg))[(n)].member) 439#else 440# define PAM_MSG_MEMBER(msg, n, member) ((msg)[(n)]->member) 441#endif 442 443#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO) 444# undef HAVE_GETADDRINFO 445#endif 446#if defined(BROKEN_GETADDRINFO) && defined(HAVE_FREEADDRINFO) 447# undef HAVE_FREEADDRINFO 448#endif 449#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GAI_STRERROR) 450# undef HAVE_GAI_STRERROR 451#endif 452 453#if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) 454# define memmove(s1, s2, n) bcopy((s2), (s1), (n)) 455#endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */ 456 457#if defined(HAVE_VHANGUP) && !defined(HAVE_DEV_PTMX) 458# define USE_VHANGUP 459#endif /* defined(HAVE_VHANGUP) && !defined(HAVE_DEV_PTMX) */ 460 461#ifndef GETPGRP_VOID 462# define getpgrp() getpgrp(0) 463#endif 464 465/* OPENSSL_free() is Free() in versions before OpenSSL 0.9.6 */ 466#if !defined(OPENSSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x0090600f) 467# define OPENSSL_free(x) Free(x) 468#endif 469 470#if !defined(HAVE___func__) && defined(HAVE___FUNCTION__) 471# define __func__ __FUNCTION__ 472#elif !defined(HAVE___func__) 473# define __func__ "" 474#endif 475 476/* 477 * Define this to use pipes instead of socketpairs for communicating with the 478 * client program. Socketpairs do not seem to work on all systems. 479 * 480 * configure.ac sets this for a few OS's which are known to have problems 481 * but you may need to set it yourself 482 */ 483/* #define USE_PIPES 1 */ 484 485/** 486 ** login recorder definitions 487 **/ 488 489/* FIXME: put default paths back in */ 490#ifndef UTMP_FILE 491# ifdef _PATH_UTMP 492# define UTMP_FILE _PATH_UTMP 493# else 494# ifdef CONF_UTMP_FILE 495# define UTMP_FILE CONF_UTMP_FILE 496# endif 497# endif 498#endif 499#ifndef WTMP_FILE 500# ifdef _PATH_WTMP 501# define WTMP_FILE _PATH_WTMP 502# else 503# ifdef CONF_WTMP_FILE 504# define WTMP_FILE CONF_WTMP_FILE 505# endif 506# endif 507#endif 508/* pick up the user's location for lastlog if given */ 509#ifndef LASTLOG_FILE 510# ifdef _PATH_LASTLOG 511# define LASTLOG_FILE _PATH_LASTLOG 512# else 513# ifdef CONF_LASTLOG_FILE 514# define LASTLOG_FILE CONF_LASTLOG_FILE 515# endif 516# endif 517#endif 518 519 520/* The login() library function in libutil is first choice */ 521#if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN) 522# define USE_LOGIN 523 524#else 525/* Simply select your favourite login types. */ 526/* Can't do if-else because some systems use several... <sigh> */ 527# if defined(UTMPX_FILE) && !defined(DISABLE_UTMPX) 528# define USE_UTMPX 529# endif 530# if defined(UTMP_FILE) && !defined(DISABLE_UTMP) 531# define USE_UTMP 532# endif 533# if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX) 534# define USE_WTMPX 535# endif 536# if defined(WTMP_FILE) && !defined(DISABLE_WTMP) 537# define USE_WTMP 538# endif 539 540#endif 541 542/* I hope that the presence of LASTLOG_FILE is enough to detect this */ 543#if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG) 544# define USE_LASTLOG 545#endif 546 547/** end of login recorder definitions */ 548 549#endif /* _DEFINES_H */ 550