sh.types.h revision 145479
1276789Sdim/* $Header: /src/pub/tcsh/sh.types.h,v 3.42 2005/03/03 19:57:07 kim Exp $ */
2276789Sdim/* sh.types.h: Do the necessary typedefs for each system.
3353358Sdim *             Up till now I avoided making this into a separate file
4353358Sdim *	       But I just wanted to eliminate the whole mess from sh.h
5353358Sdim *	       In reality this should not be here! It is OS and MACHINE
6276789Sdim *	       dependent, even between different revisions of OS's...
7276789Sdim *	       Ideally there should be a way in c, to find out if something
8276789Sdim *	       was typedef'ed, but unfortunately we rely in cpp kludges.
9276789Sdim *	       Someday, this file will be removed...
10276789Sdim *
11360784Sdim *						christos
12276789Sdim */
13360784Sdim/*-
14360784Sdim * Copyright (c) 1980, 1991 The Regents of the University of California.
15360784Sdim * All rights reserved.
16360784Sdim *
17360784Sdim * Redistribution and use in source and binary forms, with or without
18360784Sdim * modification, are permitted provided that the following conditions
19360784Sdim * are met:
20360784Sdim * 1. Redistributions of source code must retain the above copyright
21360784Sdim *    notice, this list of conditions and the following disclaimer.
22360784Sdim * 2. Redistributions in binary form must reproduce the above copyright
23360784Sdim *    notice, this list of conditions and the following disclaimer in the
24360784Sdim *    documentation and/or other materials provided with the distribution.
25360784Sdim * 3. Neither the name of the University nor the names of its contributors
26360784Sdim *    may be used to endorse or promote products derived from this software
27360784Sdim *    without specific prior written permission.
28360784Sdim *
29296417Sdim * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30276789Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31276789Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32276789Sdim * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33276789Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34276789Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35276789Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36276789Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37276789Sdim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38276789Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39276789Sdim * SUCH DAMAGE.
40276789Sdim */
41276789Sdim#ifndef _h_sh_types
42309124Sdim#define _h_sh_types
43309124Sdim
44309124Sdim
45309124Sdim/***
46309124Sdim *** LynxOS 2.1
47309124Sdim ***/
48309124Sdim#ifdef Lynx
49276789Sdim# ifndef _SIGMASK_T
50360784Sdim#  define _SIGMASK_T
51360784Sdim    typedef long sigmask_t;
52360784Sdim# endif /* _SIGMASK_T */
53360784Sdim# ifndef _PID_T
54360784Sdim#  define _PID_T
55360784Sdim# endif /* _PID_T */
56360784Sdim#endif
57360784Sdim
58360784Sdim/***
59360784Sdim *** MachTen
60296417Sdim ***/
61360784Sdim#ifdef __MACHTEN__
62360784Sdim# ifndef _PID_T
63360784Sdim#  define _PID_T
64360784Sdim# endif
65360784Sdim#endif
66360784Sdim
67360784Sdim
68360784Sdim/***
69360784Sdim *** Suns running sunos3.x - sunos4.1.x
70360784Sdim ***/
71360784Sdim#if (defined(sun) || defined(__sun__)) && SYSVREL == 0
72360784Sdim/* This used to be long, but lint dissagrees... */
73360784Sdim# ifndef _SIGMASK_T
74360784Sdim#  define _SIGMASK_T
75360784Sdim    typedef int sigmask_t;
76360784Sdim# endif /* _SIGMASK_T */
77360784Sdim# ifndef _PTR_T
78360784Sdim#  define _PTR_T
79360784Sdim#   ifdef __GNUC__
80360784Sdim    typedef void * ptr_t;
81360784Sdim#   else
82360784Sdim    typedef char * ptr_t;
83360784Sdim#   endif /* __GNUC__ */
84360784Sdim# endif /* _PTR_T */
85360784Sdim# ifndef __sys_stdtypes_h
86276789Sdim#  define __sys_stdtypes_h
87296417Sdim#   ifndef __lucid
88296417Sdim     typedef int pid_t;
89296417Sdim     typedef unsigned int speed_t;
90276789Sdim#   endif
91309124Sdim# endif /* __sys_stdtypes.h */
92360784Sdim# ifndef _PID_T
93360784Sdim#  define _PID_T
94360784Sdim# endif /* _PID_T */
95360784Sdim# ifndef _SPEED_T
96360784Sdim#  define _SPEED_T
97360784Sdim# endif /* _SPEED_T */
98360784Sdim#endif /* (sun || __sun__) && SYSVREL == 0 */
99360784Sdim
100360784Sdim
101360784Sdim/***
102360784Sdim *** Hp's running hpux 7.0 or 8.0
103296417Sdim ***/
104360784Sdim#ifdef __hpux
105360784Sdim
106360784Sdim# ifndef _PTR_T
107276789Sdim#  define _PTR_T
108276789Sdim    typedef void * ptr_t;
109321369Sdim# endif /* _PTR_T */
110321369Sdim
111321369Sdim# ifndef _PID_T
112321369Sdim#  define _PID_T
113321369Sdim    typedef long pid_t;
114321369Sdim# endif /* _PID_T */
115296417Sdim
116321369Sdim# ifndef _SIGMASK_T
117321369Sdim#  define _SIGMASK_T
118321369Sdim    typedef long sigmask_t;
119276789Sdim# endif /* _SIGMASK_T */
120276789Sdim
121296417Sdim# ifndef _SPEED_T
122276789Sdim   /* I thought POSIX was supposed to protect all typedefs! */
123276789Sdim#  define _SPEED_T
124276789Sdim# endif /* _SPEED_T */
125321369Sdim
126321369Sdim# if HPUXVERSION < 1100	/* XXX: Not true for 11.0 */
127321369Sdimextern uid_t getuid(), geteuid();
128321369Sdimextern gid_t getgid(), getegid();
129276789Sdimextern sigmask_t sigblock();
130extern sigmask_t sigsetmask();
131extern pid_t getpid();
132extern pid_t fork();
133extern void perror();
134extern void _exit();
135extern void abort();
136extern void qsort();
137extern void free();
138extern unsigned int alarm();
139extern unsigned int sleep();
140# endif /* HPUXVERSION < 1100 */
141# if HPUXVERSION < 800	/* XXX: Not true for 8.0 */
142extern void sigpause();
143extern sigmask_t sigspace();
144extern char *sbrk();
145# endif /* HPUXVERSION < 800 */
146#endif /* __hpux */
147
148#if (defined(_MINIX) && !defined(_MINIX_VMD)) || defined(__EMX__) || defined(COHERENT)
149typedef char * caddr_t;
150#endif /* (_MINIX && !_MINIX_VMD) || __EMX__ || COHERENT */
151
152/***
153 *** hp9000s500 running hpux-5.2
154 ***/
155#ifdef hp9000s500
156# ifndef _PTR_T
157#  define _PTR_T
158    typedef char * ptr_t;
159# endif /* _PTR_T */
160#endif /* hp9000s500 */
161
162/***
163 *** Data General AViiON 88000 or Pentium, running dgux 5.4R3 or R4.11
164 ***/
165#ifdef DGUX
166# ifndef _PID_T
167#  define _PID_T
168# endif /* _PID_T */
169#endif /* DGUX */
170
171
172/***
173 *** BSD RENO advertises itself as POSIX, but
174 *** it is missing speed_t
175 ***/
176#ifdef RENO
177# ifndef _SPEED_T
178#  define _SPEED_T
179   typedef unsigned int speed_t;
180# endif /* _SPEED_T */
181#endif /* RENO */
182
183
184/***
185 *** NeXT OS 3.x
186 ***/
187#ifdef NeXT
188# ifndef _SPEED_T
189#  define _SPEED_T
190   typedef unsigned int speed_t;
191# endif /* _SPEED_T */
192#endif /* NeXT */
193
194/***
195 *** Utah's HPBSD
196 *** some posix & 4.4 BSD changes (pid_t is a short)
197 ***/
198#ifdef HPBSD
199# ifndef _PID_T
200#  define _PID_T
201# endif /* _PID_T */
202#endif /* HPBSD */
203
204
205/***
206 *** Pyramid, BSD universe
207 *** In addition to the size_t
208 ***/
209#ifdef pyr
210# ifndef _PID_T
211#  define _PID_T
212   typedef short pid_t;
213# endif /* _PID_T */
214#endif /* pyr */
215
216
217/***
218 *** rs6000, ibm370, ps2, rt: running flavors of aix.
219 ***/
220#ifdef IBMAIX
221# ifndef aiws
222#  ifndef _PID_T
223#   define _PID_T
224#  endif /* _PID_T */
225# endif /* !aiws */
226# ifdef _IBMR2
227#  ifndef _SPEED_T
228#   define _SPEED_T
229#  endif /* _SPEED_T */
230# endif /* _IBMR2 */
231#endif /* IBMAIX */
232
233
234/***
235 *** Ultrix...
236 ***/
237#if defined(ultrix) || defined(__ultrix)
238# ifndef _PID_T
239#  define _PID_T
240# endif /* _PID_T */
241# ifndef _PTR_T
242#  define _PTR_T
243    typedef void * ptr_t;
244# endif /* _PTR_T */
245#endif /* ultrix || __ultrix */
246
247
248/***
249 *** Silicon graphics IRIS4D running IRIX3_3
250 ***/
251#if defined(IRIS4D) && defined(IRIX3_3)
252# ifndef _PID_T
253#  define _PID_T
254# endif /* _PID_T */
255#endif /* IRIS4D && IRIX3_3 */
256
257
258/***
259 *** Apple AUX.
260 ***/
261#ifdef OREO
262# ifndef _PID_T
263#  define _PID_T
264# endif /* _PID_T */
265#endif /* OREO */
266
267/***
268 *** Concurrent (Masscomp) running RTU 4.1A & RTU 5.0.
269 **** [RTU 6.0 from mike connor]
270 *** Added, DAS DEC-90.
271 ***/
272#ifdef	masscomp
273# ifdef RTU6
274#  ifndef _PID_T
275#   define _PID_T
276#  endif /* _PID_T */
277#  ifndef _SPEED_T
278#   define _SPEED_T
279#  endif /* _SPEED_T */
280#endif /* RTU6 */
281#endif	/* masscomp */
282
283/*
284 * Motorola MPC running R32V2 (sysV88)
285 */
286#ifdef sysV88
287# ifndef _PID_T
288#  define _PID_T
289# endif /* _PID_T */
290#endif /* sysV88 */
291
292/*
293 * Amdahl running UTS (Sys V3)
294 */
295#ifdef uts
296# ifndef _PID_T
297#  define _PID_T
298# endif /* _PID_T */
299#endif /* uts */
300
301/*
302 * Tektronix XD88/10 running UTekV (Sys V3)
303 */
304#ifdef UTekV
305# ifndef _PID_T
306#  define _PID_T
307# endif /* _PID_T */
308#endif /* UTekV*/
309
310/*
311 * BBN Butterfly gp1000
312 */
313#ifdef butterfly
314# ifndef _PID_T
315#  define _PID_T
316# endif /* _PID_T */
317#endif /* butterfly */
318
319/*
320 * Alliant FX-2800/FX-80
321 */
322#ifdef alliant
323# ifndef _PID_T
324#  define _PID_T
325# endif /* _PID_T */
326# ifdef mc68000
327   typedef int   pid_t; /* FX-80 */
328# else
329   typedef short pid_t;	/* FX-2800 */
330# endif
331#endif /* alliant */
332
333/*
334 * DNIX
335 */
336#ifdef DNIX
337# ifndef _PID_T
338#  define _PID_T
339# endif /* _PID_T */
340#endif /* DNIX */
341
342/*
343 *  Apollo running Domain/OS SR10.3 or greater
344 */
345#ifdef apollo
346# ifndef _PID_T
347#  define _PID_T
348   typedef int pid_t;	/* Older versions might not like that */
349# endif /* _PID_T */
350#endif /* apollo */
351
352/***
353 *** a pdp/11, running 2BSD
354 ***/
355#ifdef pdp11
356# ifndef _PID_T
357#  define _PID_T
358# endif /* _PID_T */
359#endif /* pdp11 */
360
361/***
362 *** a Harris, running CX/UX
363 ***/
364#ifdef _CX_UX
365# ifndef _PID_T
366#  define _PID_T
367# endif /* _PID_T */
368#endif /* _CX_UX */
369
370/***
371 *** Catch all for non POSIX and/or non ANSI systems.
372 *** Systems up to spec *should* define these automatically
373 *** I am open to suggestions on how to do this correctly!
374 ***/
375
376#ifndef POSIX
377
378# ifndef _PID_T
379#  define _PID_T
380    typedef int pid_t;
381# endif /* _PID_T */
382
383# ifndef _SPEED_T
384#  define _SPEED_T
385    typedef unsigned int speed_t;
386# endif /* _SPEED_T */
387
388# ifndef _PTR_T
389#  define _PTR_T
390    typedef char * ptr_t;
391#endif /* _PTR_T */
392
393# ifndef _IOCTL_T
394#  define _IOCTL_T
395    typedef char * ioctl_t;	/* Third arg of ioctl */
396# endif /* _IOCTL_T */
397
398#endif /* ! POSIX */
399
400
401
402/***
403 *** This is our own junk types.
404 ***/
405#ifndef _PTR_T
406# define _PTR_T
407    typedef void * ptr_t;
408#endif /* _PTR_T */
409
410#ifndef _SIGMASK_T
411# define _SIGMASK_T
412    typedef int sigmask_t;
413#endif /* _SIGMASK_T */
414
415#ifndef _IOCTL_T
416# define _IOCTL_T
417    typedef void * ioctl_t;	/* Third arg of ioctl */
418#endif /* _IOCTL_T */
419
420#endif /* _h_sh_types */
421