1*3a571abcSchristos/* Id: port.h.in,v 8.15 2001/01/01 20:26:48 skimo Exp (Berkeley) Date: 2001/01/01 20:26:48 */ 2*3a571abcSchristos 3*3a571abcSchristos/* 4*3a571abcSchristos * Declare the basic types, if they aren't already declared. Named and 5*3a571abcSchristos * some system's db.h files protect them with __BIT_TYPES_DEFINED__. 6*3a571abcSchristos */ 7*3a571abcSchristos#ifndef __BIT_TYPES_DEFINED__ 8*3a571abcSchristos#define __BIT_TYPES_DEFINED__ 9*3a571abcSchristos@u_int8_decl@ 10*3a571abcSchristos@int16_decl@ 11*3a571abcSchristos@u_int16_decl@ 12*3a571abcSchristos@int32_decl@ 13*3a571abcSchristos@u_int32_decl@ 14*3a571abcSchristos#endif 15*3a571abcSchristos 16*3a571abcSchristos@u_char_decl@ 17*3a571abcSchristos@u_short_decl@ 18*3a571abcSchristos@u_int_decl@ 19*3a571abcSchristos@u_long_decl@ 20*3a571abcSchristos 21*3a571abcSchristos/* 22*3a571abcSchristos * XXX 23*3a571abcSchristos * Handle function prototypes. This steps on name space that vi doesn't 24*3a571abcSchristos * control, but all of the other solutions are worse. 25*3a571abcSchristos */ 26*3a571abcSchristos#undef __P 27*3a571abcSchristos#if defined(__STDC__) || defined(__cplusplus) 28*3a571abcSchristos#define __P(protos) protos /* ANSI C prototypes */ 29*3a571abcSchristos#else 30*3a571abcSchristos#define __P(protos) () /* K&R C preprocessor */ 31*3a571abcSchristos#endif 32*3a571abcSchristos 33*3a571abcSchristos/* 34*3a571abcSchristos * XXX 35*3a571abcSchristos * Some versions of System V changed the number of arguments to gettimeofday 36*3a571abcSchristos * without changing the name. 37*3a571abcSchristos */ 38*3a571abcSchristos#ifdef HAVE_BROKEN_GETTIMEOFDAY 39*3a571abcSchristos#define gettimeofday(tv, tz) gettimeofday(tv) 40*3a571abcSchristos#endif 41*3a571abcSchristos 42*3a571abcSchristos/* 43*3a571abcSchristos * XXX 44*3a571abcSchristos * If we don't have mmap, we fake it with read and write, but we'll 45*3a571abcSchristos * still need the header information. 46*3a571abcSchristos */ 47*3a571abcSchristos#ifndef HAVE_SYS_MMAN_H 48*3a571abcSchristos#define MAP_SHARED 1 /* share changes */ 49*3a571abcSchristos#define MAP_PRIVATE 2 /* changes are private */ 50*3a571abcSchristos#define PROT_READ 0x1 /* pages can be read */ 51*3a571abcSchristos#define PROT_WRITE 0x2 /* pages can be written */ 52*3a571abcSchristos#define PROT_EXEC 0x4 /* pages can be executed */ 53*3a571abcSchristos#endif 54*3a571abcSchristos 55*3a571abcSchristos/* 56*3a571abcSchristos * XXX 57*3a571abcSchristos * POSIX 1003.1 names for file descriptors. 58*3a571abcSchristos */ 59*3a571abcSchristos#ifndef STDERR_FILENO 60*3a571abcSchristos#define STDIN_FILENO 0 /* ANSI C #defines */ 61*3a571abcSchristos#define STDOUT_FILENO 1 62*3a571abcSchristos#define STDERR_FILENO 2 63*3a571abcSchristos#endif 64*3a571abcSchristos 65*3a571abcSchristos/* 66*3a571abcSchristos * XXX 67*3a571abcSchristos * POSIX 1003.1 names for seek settings. 68*3a571abcSchristos */ 69*3a571abcSchristos#ifndef SEEK_END 70*3a571abcSchristos#define SEEK_SET 0 /* POSIX 1003.1 seek values */ 71*3a571abcSchristos#define SEEK_CUR 1 72*3a571abcSchristos#define SEEK_END 2 73*3a571abcSchristos#endif 74*3a571abcSchristos 75*3a571abcSchristos/* 76*3a571abcSchristos * Hack _POSIX_VDISABLE to \377 since Ultrix doesn't honor _POSIX_VDISABLE 77*3a571abcSchristos * (treats it as ^@). The symptom is that the ^@ keystroke immediately 78*3a571abcSchristos * drops core. 79*3a571abcSchristos */ 80*3a571abcSchristos#ifdef HAVE_BROKEN_VDISABLE 81*3a571abcSchristos#undef _POSIX_VDISABLE 82*3a571abcSchristos#define _POSIX_VDISABLE ((unsigned char)'\377') 83*3a571abcSchristos#endif 84*3a571abcSchristos 85*3a571abcSchristos/* 86*3a571abcSchristos * XXX 87*3a571abcSchristos * POSIX 1003.1 tty disabling character. 88*3a571abcSchristos */ 89*3a571abcSchristos#ifndef _POSIX_VDISABLE 90*3a571abcSchristos#define _POSIX_VDISABLE 0 /* Some systems used 0. */ 91*3a571abcSchristos#endif 92*3a571abcSchristos 93*3a571abcSchristos/* 94*3a571abcSchristos * XXX 95*3a571abcSchristos * 4.4BSD extension to only set the software termios bits. 96*3a571abcSchristos */ 97*3a571abcSchristos#ifndef TCSASOFT /* 4.4BSD extension. */ 98*3a571abcSchristos#define TCSASOFT 0 99*3a571abcSchristos#endif 100*3a571abcSchristos 101*3a571abcSchristos/* 102*3a571abcSchristos * XXX 103*3a571abcSchristos * POSIX 1003.1 maximum path length. 104*3a571abcSchristos */ 105*3a571abcSchristos#ifndef MAXPATHLEN 106*3a571abcSchristos#ifdef PATH_MAX 107*3a571abcSchristos#define MAXPATHLEN PATH_MAX 108*3a571abcSchristos#else 109*3a571abcSchristos#define MAXPATHLEN 1024 110*3a571abcSchristos#endif 111*3a571abcSchristos#endif 112*3a571abcSchristos 113*3a571abcSchristos/* 114*3a571abcSchristos * XXX 115*3a571abcSchristos * MIN, MAX, historically in <sys/param.h> 116*3a571abcSchristos */ 117*3a571abcSchristos#ifndef MAX 118*3a571abcSchristos#define MAX(_a,_b) ((_a)<(_b)?(_b):(_a)) 119*3a571abcSchristos#endif 120*3a571abcSchristos#ifndef MIN 121*3a571abcSchristos#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) 122*3a571abcSchristos#endif 123*3a571abcSchristos 124*3a571abcSchristos/* 125*3a571abcSchristos * XXX 126*3a571abcSchristos * "DB" isn't always portable, and we want the private information. 127*3a571abcSchristos */ 128*3a571abcSchristos#define DB L__DB 129*3a571abcSchristos#undef pgno_t /* IRIX has its own version. */ 130*3a571abcSchristos#define pgno_t L__db_pgno_t 131*3a571abcSchristos 132*3a571abcSchristos/* 133*3a571abcSchristos * XXX 134*3a571abcSchristos * 4.4BSD extension to provide lock values in the open(2) call. 135*3a571abcSchristos */ 136*3a571abcSchristos#ifndef O_EXLOCK 137*3a571abcSchristos#define O_EXLOCK 0 138*3a571abcSchristos#endif 139*3a571abcSchristos 140*3a571abcSchristos#ifndef O_SHLOCK 141*3a571abcSchristos#define O_SHLOCK 0 142*3a571abcSchristos#endif 143*3a571abcSchristos 144*3a571abcSchristos/* 145*3a571abcSchristos * XXX 146*3a571abcSchristos * POSIX 1003.1 bad file format errno. 147*3a571abcSchristos */ 148*3a571abcSchristos#ifndef EFTYPE 149*3a571abcSchristos#define EFTYPE EINVAL 150*3a571abcSchristos#endif 151*3a571abcSchristos 152*3a571abcSchristos/* 153*3a571abcSchristos * XXX 154*3a571abcSchristos * POSIX 1003.2 RE length limit. 155*3a571abcSchristos */ 156*3a571abcSchristos#ifndef _POSIX2_RE_DUP_MAX 157*3a571abcSchristos#define _POSIX2_RE_DUP_MAX 255 158*3a571abcSchristos#endif 159*3a571abcSchristos 160*3a571abcSchristos/* 161*3a571abcSchristos * XXX 162*3a571abcSchristos * 4.4BSD extension to determine if a program dropped core from the exit 163*3a571abcSchristos * status. 164*3a571abcSchristos */ 165*3a571abcSchristos#ifndef WCOREDUMP 166*3a571abcSchristos#define WCOREDUMP(a) 0 167*3a571abcSchristos#endif 168*3a571abcSchristos 169*3a571abcSchristos/* 170*3a571abcSchristos * XXX 171*3a571abcSchristos * Endian-ness of the machine. 172*3a571abcSchristos */ 173*3a571abcSchristos#if !defined(LITTLE_ENDIAN) 174*3a571abcSchristos#define LITTLE_ENDIAN 1234 175*3a571abcSchristos#endif 176*3a571abcSchristos#if !defined(BIG_ENDIAN) 177*3a571abcSchristos#define BIG_ENDIAN 4321 178*3a571abcSchristos#endif 179*3a571abcSchristos#if !defined(BYTE_ORDER) 180*3a571abcSchristos#if WORDS_BIGENDIAN == 1 181*3a571abcSchristos#define BYTE_ORDER BIG_ENDIAN 182*3a571abcSchristos#else 183*3a571abcSchristos#define BYTE_ORDER LITTLE_ENDIAN 184*3a571abcSchristos#endif 185*3a571abcSchristos#endif 186*3a571abcSchristos 187*3a571abcSchristos#ifndef HAVE_MEMCPY 188*3a571abcSchristos#define memcpy memmove 189*3a571abcSchristos#endif 190*3a571abcSchristos 191*3a571abcSchristos#ifdef NEED_FPRINTF_PROTO 192*3a571abcSchristosextern int fprintf( FILE *, const char *, ... ); 193*3a571abcSchristos#endif 194*3a571abcSchristos 195*3a571abcSchristos#ifdef HAVE_PTHREAD 196*3a571abcSchristos#define VI_DB_THREAD DB_THREAD 197*3a571abcSchristos#else 198*3a571abcSchristos#define VI_DB_THREAD 0 199*3a571abcSchristos#endif 200