sh.types.h revision 167466
1303241Sdim/* $Header: /p/tcsh/cvsroot/tcsh/sh.types.h,v 3.43 2006/01/12 19:55:38 christos Exp $ */
2303241Sdim/* 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
6303241Sdim *	       dependent, even between different revisions of OS's...
7303241Sdim *	       Ideally there should be a way in c, to find out if something
8303241Sdim *	       was typedef'ed, but unfortunately we rely in cpp kludges.
9314564Sdim *	       Someday, this file will be removed...
10353358Sdim *
11353358Sdim *						christos
12303241Sdim */
13303241Sdim/*-
14303241Sdim * Copyright (c) 1980, 1991 The Regents of the University of California.
15303241Sdim * All rights reserved.
16321369Sdim *
17303241Sdim * Redistribution and use in source and binary forms, with or without
18303241Sdim * modification, are permitted provided that the following conditions
19303241Sdim * are met:
20303241Sdim * 1. Redistributions of source code must retain the above copyright
21353358Sdim *    notice, this list of conditions and the following disclaimer.
22353358Sdim * 2. Redistributions in binary form must reproduce the above copyright
23353358Sdim *    notice, this list of conditions and the following disclaimer in the
24303241Sdim *    documentation and/or other materials provided with the distribution.
25314564Sdim * 3. Neither the name of the University nor the names of its contributors
26353358Sdim *    may be used to endorse or promote products derived from this software
27314564Sdim *    without specific prior written permission.
28314564Sdim *
29303241Sdim * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30303241Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31314564Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32353358Sdim * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33353358Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34353358Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35353358Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36303241Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37303241Sdim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38314564Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39314564Sdim * SUCH DAMAGE.
40353358Sdim */
41353358Sdim#ifndef _h_sh_types
42353358Sdim#define _h_sh_types
43353358Sdim
44353358Sdim
45353358Sdim/***
46353358Sdim *** LynxOS 2.1
47303241Sdim ***/
48303241Sdim#ifdef Lynx
49314564Sdim# ifndef _PID_T
50303241Sdim#  define _PID_T
51353358Sdim# endif /* _PID_T */
52353358Sdim#endif
53303241Sdim
54353358Sdim/***
55353358Sdim *** MachTen
56353358Sdim ***/
57314564Sdim#ifdef __MACHTEN__
58353358Sdim# ifndef _PID_T
59353358Sdim#  define _PID_T
60353358Sdim# endif
61353358Sdim#endif
62314564Sdim
63303241Sdim
64303241Sdim/***
65314564Sdim *** Suns running sunos3.x - sunos4.1.x
66353358Sdim ***/
67353358Sdim#if (defined(sun) || defined(__sun__)) && SYSVREL == 0
68353358Sdim# ifndef _PTR_T
69353358Sdim#  define _PTR_T
70314564Sdim#   ifdef __GNUC__
71303241Sdim    typedef void * ptr_t;
72303241Sdim#   else
73353358Sdim    typedef char * ptr_t;
74303241Sdim#   endif /* __GNUC__ */
75353358Sdim# endif /* _PTR_T */
76303241Sdim# ifndef __sys_stdtypes_h
77314564Sdim#  define __sys_stdtypes_h
78353358Sdim#   ifndef __lucid
79353358Sdim     typedef int pid_t;
80353358Sdim     typedef unsigned int speed_t;
81303241Sdim#   endif
82303241Sdim# endif /* __sys_stdtypes.h */
83314564Sdim# ifndef _PID_T
84353358Sdim#  define _PID_T
85353358Sdim# endif /* _PID_T */
86353358Sdim# ifndef _SPEED_T
87303241Sdim#  define _SPEED_T
88303241Sdim# endif /* _SPEED_T */
89314564Sdim#endif /* (sun || __sun__) && SYSVREL == 0 */
90353358Sdim
91353358Sdim
92353358Sdim/***
93303241Sdim *** Hp's running hpux 7.0 or 8.0
94303241Sdim ***/
95314564Sdim#ifdef __hpux
96353358Sdim
97353358Sdim# ifndef _PTR_T
98353358Sdim#  define _PTR_T
99303241Sdim    typedef void * ptr_t;
100303241Sdim# endif /* _PTR_T */
101314564Sdim
102353358Sdim# ifndef _PID_T
103353358Sdim#  define _PID_T
104353358Sdim    typedef long pid_t;
105303241Sdim# endif /* _PID_T */
106303241Sdim
107314564Sdim# ifndef _SPEED_T
108353358Sdim   /* I thought POSIX was supposed to protect all typedefs! */
109353358Sdim#  define _SPEED_T
110353358Sdim# endif /* _SPEED_T */
111303241Sdim
112303241Sdim# if HPUXVERSION < 1100	/* XXX: Not true for 11.0 */
113314564Sdimextern uid_t getuid(), geteuid();
114353358Sdimextern gid_t getgid(), getegid();
115353358Sdimextern pid_t getpid();
116353358Sdimextern pid_t fork();
117303241Sdimextern void perror();
118303241Sdimextern void _exit();
119314564Sdimextern void abort();
120353358Sdimextern void qsort();
121353358Sdimextern void free();
122353358Sdimextern unsigned int alarm();
123314564Sdimextern unsigned int sleep();
124353358Sdim# endif /* HPUXVERSION < 1100 */
125303241Sdim# if HPUXVERSION < 800	/* XXX: Not true for 8.0 */
126314564Sdimextern char *sbrk();
127353358Sdim# endif /* HPUXVERSION < 800 */
128353358Sdim#endif /* __hpux */
129353358Sdim
130353358Sdim#if (defined(_MINIX) && !defined(_MINIX_VMD)) || defined(__EMX__)
131314564Sdimtypedef char * caddr_t;
132303241Sdim#endif /* (_MINIX && !_MINIX_VMD) || __EMX__ */
133314564Sdim
134303241Sdim/***
135353358Sdim *** hp9000s500 running hpux-5.2
136353358Sdim ***/
137353358Sdim#ifdef hp9000s500
138353358Sdim# ifndef _PTR_T
139353358Sdim#  define _PTR_T
140353358Sdim    typedef char * ptr_t;
141353358Sdim# endif /* _PTR_T */
142353358Sdim#endif /* hp9000s500 */
143353358Sdim
144353358Sdim/***
145353358Sdim *** Data General AViiON 88000 or Pentium, running dgux 5.4R3 or R4.11
146353358Sdim ***/
147353358Sdim#ifdef DGUX
148353358Sdim# ifndef _PID_T
149353358Sdim#  define _PID_T
150353358Sdim# endif /* _PID_T */
151353358Sdim#endif /* DGUX */
152353358Sdim
153353358Sdim
154353358Sdim/***
155353358Sdim *** BSD RENO advertises itself as POSIX, but
156353358Sdim *** it is missing speed_t
157353358Sdim ***/
158353358Sdim#ifdef RENO
159353358Sdim# ifndef _SPEED_T
160353358Sdim#  define _SPEED_T
161353358Sdim   typedef unsigned int speed_t;
162353358Sdim# endif /* _SPEED_T */
163353358Sdim#endif /* RENO */
164353358Sdim
165353358Sdim
166353358Sdim/***
167 *** NeXT OS 3.x
168 ***/
169#ifdef NeXT
170# ifndef _SPEED_T
171#  define _SPEED_T
172   typedef unsigned int speed_t;
173# endif /* _SPEED_T */
174#endif /* NeXT */
175
176/***
177 *** Utah's HPBSD
178 *** some posix & 4.4 BSD changes (pid_t is a short)
179 ***/
180#ifdef HPBSD
181# ifndef _PID_T
182#  define _PID_T
183# endif /* _PID_T */
184#endif /* HPBSD */
185
186
187/***
188 *** Pyramid, BSD universe
189 *** In addition to the size_t
190 ***/
191#ifdef pyr
192# ifndef _PID_T
193#  define _PID_T
194   typedef short pid_t;
195# endif /* _PID_T */
196#endif /* pyr */
197
198
199/***
200 *** rs6000, ibm370, ps2, rt: running flavors of aix.
201 ***/
202#ifdef IBMAIX
203# ifndef aiws
204#  ifndef _PID_T
205#   define _PID_T
206#  endif /* _PID_T */
207# endif /* !aiws */
208# ifdef _IBMR2
209#  ifndef _SPEED_T
210#   define _SPEED_T
211#  endif /* _SPEED_T */
212# endif /* _IBMR2 */
213#endif /* IBMAIX */
214
215
216/***
217 *** Ultrix...
218 ***/
219#if defined(ultrix) || defined(__ultrix)
220# ifndef _PID_T
221#  define _PID_T
222# endif /* _PID_T */
223# ifndef _PTR_T
224#  define _PTR_T
225    typedef void * ptr_t;
226# endif /* _PTR_T */
227#endif /* ultrix || __ultrix */
228
229
230/***
231 *** Silicon graphics IRIS4D running IRIX3_3
232 ***/
233#if defined(IRIS4D) && defined(IRIX3_3)
234# ifndef _PID_T
235#  define _PID_T
236# endif /* _PID_T */
237#endif /* IRIS4D && IRIX3_3 */
238
239
240/***
241 *** Apple AUX.
242 ***/
243#ifdef OREO
244# ifndef _PID_T
245#  define _PID_T
246# endif /* _PID_T */
247#endif /* OREO */
248
249/***
250 *** Concurrent (Masscomp) running RTU 4.1A & RTU 5.0.
251 **** [RTU 6.0 from mike connor]
252 *** Added, DAS DEC-90.
253 ***/
254#ifdef	masscomp
255# ifdef RTU6
256#  ifndef _PID_T
257#   define _PID_T
258#  endif /* _PID_T */
259#  ifndef _SPEED_T
260#   define _SPEED_T
261#  endif /* _SPEED_T */
262#endif /* RTU6 */
263#endif	/* masscomp */
264
265/*
266 * Motorola MPC running R32V2 (sysV88)
267 */
268#ifdef sysV88
269# ifndef _PID_T
270#  define _PID_T
271# endif /* _PID_T */
272#endif /* sysV88 */
273
274/*
275 * Amdahl running UTS (Sys V3)
276 */
277#ifdef uts
278# ifndef _PID_T
279#  define _PID_T
280# endif /* _PID_T */
281#endif /* uts */
282
283/*
284 * Tektronix XD88/10 running UTekV (Sys V3)
285 */
286#ifdef UTekV
287# ifndef _PID_T
288#  define _PID_T
289# endif /* _PID_T */
290#endif /* UTekV*/
291
292/*
293 * BBN Butterfly gp1000
294 */
295#ifdef butterfly
296# ifndef _PID_T
297#  define _PID_T
298# endif /* _PID_T */
299#endif /* butterfly */
300
301/*
302 * Alliant FX-2800/FX-80
303 */
304#ifdef alliant
305# ifndef _PID_T
306#  define _PID_T
307# endif /* _PID_T */
308# ifdef mc68000
309   typedef int   pid_t; /* FX-80 */
310# else
311   typedef short pid_t;	/* FX-2800 */
312# endif
313#endif /* alliant */
314
315/*
316 * DNIX
317 */
318#ifdef DNIX
319# ifndef _PID_T
320#  define _PID_T
321# endif /* _PID_T */
322#endif /* DNIX */
323
324/*
325 *  Apollo running Domain/OS SR10.3 or greater
326 */
327#ifdef apollo
328# ifndef _PID_T
329#  define _PID_T
330   typedef int pid_t;	/* Older versions might not like that */
331# endif /* _PID_T */
332#endif /* apollo */
333
334/***
335 *** a pdp/11, running 2BSD
336 ***/
337#ifdef pdp11
338# ifndef _PID_T
339#  define _PID_T
340# endif /* _PID_T */
341#endif /* pdp11 */
342
343/***
344 *** a Harris, running CX/UX
345 ***/
346#ifdef _CX_UX
347# ifndef _PID_T
348#  define _PID_T
349# endif /* _PID_T */
350#endif /* _CX_UX */
351
352/***
353 *** Catch all for non POSIX and/or non ANSI systems.
354 *** Systems up to spec *should* define these automatically
355 *** I am open to suggestions on how to do this correctly!
356 ***/
357
358#ifndef POSIX
359
360# ifndef _PID_T
361#  define _PID_T
362    typedef int pid_t;
363# endif /* _PID_T */
364
365# ifndef _SPEED_T
366#  define _SPEED_T
367    typedef unsigned int speed_t;
368# endif /* _SPEED_T */
369
370# ifndef _PTR_T
371#  define _PTR_T
372    typedef char * ptr_t;
373#endif /* _PTR_T */
374
375# ifndef _IOCTL_T
376#  define _IOCTL_T
377    typedef char * ioctl_t;	/* Third arg of ioctl */
378# endif /* _IOCTL_T */
379
380#endif /* ! POSIX */
381
382
383
384/***
385 *** This is our own junk types.
386 ***/
387#ifndef _PTR_T
388# define _PTR_T
389    typedef void * ptr_t;
390#endif /* _PTR_T */
391
392#ifndef _IOCTL_T
393# define _IOCTL_T
394    typedef void * ioctl_t;	/* Third arg of ioctl */
395#endif /* _IOCTL_T */
396
397#endif /* _h_sh_types */
398