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