159243Sobrien/* sh.types.h: Do the necessary typedefs for each system.
259243Sobrien *             Up till now I avoided making this into a separate file
359243Sobrien *	       But I just wanted to eliminate the whole mess from sh.h
459243Sobrien *	       In reality this should not be here! It is OS and MACHINE
559243Sobrien *	       dependent, even between different revisions of OS's...
659243Sobrien *	       Ideally there should be a way in c, to find out if something
759243Sobrien *	       was typedef'ed, but unfortunately we rely in cpp kludges.
859243Sobrien *	       Someday, this file will be removed...
959243Sobrien *
1059243Sobrien *						christos
1159243Sobrien */
1259243Sobrien/*-
1359243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California.
1459243Sobrien * All rights reserved.
1559243Sobrien *
1659243Sobrien * Redistribution and use in source and binary forms, with or without
1759243Sobrien * modification, are permitted provided that the following conditions
1859243Sobrien * are met:
1959243Sobrien * 1. Redistributions of source code must retain the above copyright
2059243Sobrien *    notice, this list of conditions and the following disclaimer.
2159243Sobrien * 2. Redistributions in binary form must reproduce the above copyright
2259243Sobrien *    notice, this list of conditions and the following disclaimer in the
2359243Sobrien *    documentation and/or other materials provided with the distribution.
24100616Smp * 3. Neither the name of the University nor the names of its contributors
2559243Sobrien *    may be used to endorse or promote products derived from this software
2659243Sobrien *    without specific prior written permission.
2759243Sobrien *
2859243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2959243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
3059243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3159243Sobrien * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
3259243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3359243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3459243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3559243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3659243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3759243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3859243Sobrien * SUCH DAMAGE.
3959243Sobrien */
4059243Sobrien#ifndef _h_sh_types
4159243Sobrien#define _h_sh_types
4259243Sobrien
4359243Sobrien
4459243Sobrien/***
4559243Sobrien *** LynxOS 2.1
4659243Sobrien ***/
4759243Sobrien#ifdef Lynx
4859243Sobrien# ifndef _PID_T
4959243Sobrien#  define _PID_T
5059243Sobrien# endif /* _PID_T */
5159243Sobrien#endif
5259243Sobrien
5359243Sobrien/***
5459243Sobrien *** MachTen
5559243Sobrien ***/
5659243Sobrien#ifdef __MACHTEN__
5759243Sobrien# ifndef _PID_T
5859243Sobrien#  define _PID_T
5959243Sobrien# endif
6059243Sobrien#endif
6159243Sobrien
6259243Sobrien
6359243Sobrien/***
6459243Sobrien *** Suns running sunos3.x - sunos4.1.x
6559243Sobrien ***/
6659243Sobrien#if (defined(sun) || defined(__sun__)) && SYSVREL == 0
6759243Sobrien# ifndef _PTR_T
6859243Sobrien#  define _PTR_T
6959243Sobrien#   ifdef __GNUC__
7059243Sobrien    typedef void * ptr_t;
7159243Sobrien#   else
7259243Sobrien    typedef char * ptr_t;
7359243Sobrien#   endif /* __GNUC__ */
7459243Sobrien# endif /* _PTR_T */
7559243Sobrien# ifndef __sys_stdtypes_h
7659243Sobrien#  define __sys_stdtypes_h
7759243Sobrien#   ifndef __lucid
7859243Sobrien     typedef int pid_t;
7959243Sobrien     typedef unsigned int speed_t;
8059243Sobrien#   endif
8159243Sobrien# endif /* __sys_stdtypes.h */
8259243Sobrien# ifndef _PID_T
8359243Sobrien#  define _PID_T
8459243Sobrien# endif /* _PID_T */
8559243Sobrien# ifndef _SPEED_T
8659243Sobrien#  define _SPEED_T
8759243Sobrien# endif /* _SPEED_T */
8859243Sobrien#endif /* (sun || __sun__) && SYSVREL == 0 */
8959243Sobrien
9059243Sobrien
9159243Sobrien/***
9259243Sobrien *** Hp's running hpux 7.0 or 8.0
9359243Sobrien ***/
9459243Sobrien#ifdef __hpux
9559243Sobrien
9659243Sobrien# ifndef _PTR_T
9759243Sobrien#  define _PTR_T
9859243Sobrien    typedef void * ptr_t;
9959243Sobrien# endif /* _PTR_T */
10059243Sobrien
10159243Sobrien# ifndef _PID_T
10259243Sobrien#  define _PID_T
10359243Sobrien    typedef long pid_t;
10459243Sobrien# endif /* _PID_T */
10559243Sobrien
10659243Sobrien# ifndef _SPEED_T
10759243Sobrien   /* I thought POSIX was supposed to protect all typedefs! */
10859243Sobrien#  define _SPEED_T
10959243Sobrien# endif /* _SPEED_T */
11059243Sobrien
111131962Smp# if HPUXVERSION < 1100	/* XXX: Not true for 11.0 */
11259243Sobrienextern uid_t getuid(), geteuid();
11359243Sobrienextern gid_t getgid(), getegid();
11459243Sobrienextern pid_t getpid();
11559243Sobrienextern pid_t fork();
11659243Sobrienextern void perror();
11759243Sobrienextern void _exit();
11859243Sobrienextern void abort();
11959243Sobrienextern void qsort();
12059243Sobrienextern void free();
12159243Sobrienextern unsigned int alarm();
12259243Sobrienextern unsigned int sleep();
123131962Smp# endif /* HPUXVERSION < 1100 */
12459243Sobrien# if HPUXVERSION < 800	/* XXX: Not true for 8.0 */
12559243Sobrienextern char *sbrk();
12659243Sobrien# endif /* HPUXVERSION < 800 */
12759243Sobrien#endif /* __hpux */
12859243Sobrien
129167465Smp#if (defined(_MINIX) && !defined(_MINIX_VMD)) || defined(__EMX__)
13059243Sobrientypedef char * caddr_t;
131167465Smp#endif /* (_MINIX && !_MINIX_VMD) || __EMX__ */
13259243Sobrien
13359243Sobrien/***
13459243Sobrien *** hp9000s500 running hpux-5.2
13559243Sobrien ***/
13659243Sobrien#ifdef hp9000s500
13759243Sobrien# ifndef _PTR_T
13859243Sobrien#  define _PTR_T
13959243Sobrien    typedef char * ptr_t;
14059243Sobrien# endif /* _PTR_T */
14159243Sobrien#endif /* hp9000s500 */
14259243Sobrien
14359243Sobrien/***
14459243Sobrien *** Data General AViiON 88000 or Pentium, running dgux 5.4R3 or R4.11
14559243Sobrien ***/
14659243Sobrien#ifdef DGUX
14759243Sobrien# ifndef _PID_T
14859243Sobrien#  define _PID_T
14959243Sobrien# endif /* _PID_T */
15059243Sobrien#endif /* DGUX */
15159243Sobrien
15259243Sobrien
15359243Sobrien/***
15459243Sobrien *** BSD RENO advertises itself as POSIX, but
15559243Sobrien *** it is missing speed_t
15659243Sobrien ***/
15759243Sobrien#ifdef RENO
15859243Sobrien# ifndef _SPEED_T
15959243Sobrien#  define _SPEED_T
16059243Sobrien   typedef unsigned int speed_t;
16159243Sobrien# endif /* _SPEED_T */
16259243Sobrien#endif /* RENO */
16359243Sobrien
16459243Sobrien
16559243Sobrien/***
16659243Sobrien *** NeXT OS 3.x
16759243Sobrien ***/
16859243Sobrien#ifdef NeXT
16959243Sobrien# ifndef _SPEED_T
17059243Sobrien#  define _SPEED_T
17159243Sobrien   typedef unsigned int speed_t;
17259243Sobrien# endif /* _SPEED_T */
17359243Sobrien#endif /* NeXT */
17459243Sobrien
17559243Sobrien/***
17659243Sobrien *** Utah's HPBSD
17759243Sobrien *** some posix & 4.4 BSD changes (pid_t is a short)
17859243Sobrien ***/
17959243Sobrien#ifdef HPBSD
18059243Sobrien# ifndef _PID_T
18159243Sobrien#  define _PID_T
18259243Sobrien# endif /* _PID_T */
18359243Sobrien#endif /* HPBSD */
18459243Sobrien
18559243Sobrien
18659243Sobrien/***
18759243Sobrien *** Pyramid, BSD universe
18859243Sobrien *** In addition to the size_t
18959243Sobrien ***/
19059243Sobrien#ifdef pyr
19159243Sobrien# ifndef _PID_T
19259243Sobrien#  define _PID_T
19359243Sobrien   typedef short pid_t;
19459243Sobrien# endif /* _PID_T */
19559243Sobrien#endif /* pyr */
19659243Sobrien
19759243Sobrien
19859243Sobrien/***
19959243Sobrien *** rs6000, ibm370, ps2, rt: running flavors of aix.
20059243Sobrien ***/
20159243Sobrien#ifdef IBMAIX
20259243Sobrien# ifndef aiws
20359243Sobrien#  ifndef _PID_T
20459243Sobrien#   define _PID_T
20559243Sobrien#  endif /* _PID_T */
20659243Sobrien# endif /* !aiws */
20759243Sobrien# ifdef _IBMR2
20859243Sobrien#  ifndef _SPEED_T
20959243Sobrien#   define _SPEED_T
21059243Sobrien#  endif /* _SPEED_T */
21159243Sobrien# endif /* _IBMR2 */
21259243Sobrien#endif /* IBMAIX */
21359243Sobrien
21459243Sobrien
21559243Sobrien/***
21659243Sobrien *** Ultrix...
21759243Sobrien ***/
21859243Sobrien#if defined(ultrix) || defined(__ultrix)
21959243Sobrien# ifndef _PID_T
22059243Sobrien#  define _PID_T
22159243Sobrien# endif /* _PID_T */
22259415Sobrien# ifndef _PTR_T
22359415Sobrien#  define _PTR_T
22459415Sobrien    typedef void * ptr_t;
22559415Sobrien# endif /* _PTR_T */
22659243Sobrien#endif /* ultrix || __ultrix */
22759243Sobrien
22859243Sobrien
22959243Sobrien/***
23059243Sobrien *** Silicon graphics IRIS4D running IRIX3_3
23159243Sobrien ***/
23259243Sobrien#if defined(IRIS4D) && defined(IRIX3_3)
23359243Sobrien# ifndef _PID_T
23459243Sobrien#  define _PID_T
23559243Sobrien# endif /* _PID_T */
23659243Sobrien#endif /* IRIS4D && IRIX3_3 */
23759243Sobrien
23859243Sobrien
23959243Sobrien/***
24059243Sobrien *** Apple AUX.
24159243Sobrien ***/
24259243Sobrien#ifdef OREO
24359243Sobrien# ifndef _PID_T
24459243Sobrien#  define _PID_T
24559243Sobrien# endif /* _PID_T */
24659243Sobrien#endif /* OREO */
24759243Sobrien
24859243Sobrien/***
24959243Sobrien *** Concurrent (Masscomp) running RTU 4.1A & RTU 5.0.
25059243Sobrien **** [RTU 6.0 from mike connor]
25159243Sobrien *** Added, DAS DEC-90.
25259243Sobrien ***/
25359243Sobrien#ifdef	masscomp
25459243Sobrien# ifdef RTU6
25559243Sobrien#  ifndef _PID_T
25659243Sobrien#   define _PID_T
25759243Sobrien#  endif /* _PID_T */
25859243Sobrien#  ifndef _SPEED_T
25959243Sobrien#   define _SPEED_T
26059243Sobrien#  endif /* _SPEED_T */
26159243Sobrien#endif /* RTU6 */
26259243Sobrien#endif	/* masscomp */
26359243Sobrien
26459243Sobrien/*
26559243Sobrien * Motorola MPC running R32V2 (sysV88)
26659243Sobrien */
26759243Sobrien#ifdef sysV88
26859243Sobrien# ifndef _PID_T
26959243Sobrien#  define _PID_T
27059243Sobrien# endif /* _PID_T */
27159243Sobrien#endif /* sysV88 */
27259243Sobrien
27359243Sobrien/*
27459243Sobrien * Amdahl running UTS (Sys V3)
27559243Sobrien */
27659243Sobrien#ifdef uts
27759243Sobrien# ifndef _PID_T
27859243Sobrien#  define _PID_T
27959243Sobrien# endif /* _PID_T */
28059243Sobrien#endif /* uts */
28159243Sobrien
28259243Sobrien/*
28359243Sobrien * Tektronix XD88/10 running UTekV (Sys V3)
28459243Sobrien */
28559243Sobrien#ifdef UTekV
28659243Sobrien# ifndef _PID_T
28759243Sobrien#  define _PID_T
28859243Sobrien# endif /* _PID_T */
28959243Sobrien#endif /* UTekV*/
29059243Sobrien
29159243Sobrien/*
29259243Sobrien * BBN Butterfly gp1000
29359243Sobrien */
29459243Sobrien#ifdef butterfly
29559243Sobrien# ifndef _PID_T
29659243Sobrien#  define _PID_T
29759243Sobrien# endif /* _PID_T */
29859243Sobrien#endif /* butterfly */
29959243Sobrien
30059243Sobrien/*
30159243Sobrien * Alliant FX-2800/FX-80
30259243Sobrien */
30359243Sobrien#ifdef alliant
30459243Sobrien# ifndef _PID_T
30559243Sobrien#  define _PID_T
30659243Sobrien# endif /* _PID_T */
30759243Sobrien# ifdef mc68000
30859243Sobrien   typedef int   pid_t; /* FX-80 */
30959243Sobrien# else
31059243Sobrien   typedef short pid_t;	/* FX-2800 */
31159243Sobrien# endif
31259243Sobrien#endif /* alliant */
31359243Sobrien
31459243Sobrien/*
31559243Sobrien * DNIX
31659243Sobrien */
31759243Sobrien#ifdef DNIX
31859243Sobrien# ifndef _PID_T
31959243Sobrien#  define _PID_T
32059243Sobrien# endif /* _PID_T */
32159243Sobrien#endif /* DNIX */
32259243Sobrien
32359243Sobrien/*
32459243Sobrien *  Apollo running Domain/OS SR10.3 or greater
32559243Sobrien */
32659243Sobrien#ifdef apollo
32759243Sobrien# ifndef _PID_T
32859243Sobrien#  define _PID_T
32959243Sobrien   typedef int pid_t;	/* Older versions might not like that */
33059243Sobrien# endif /* _PID_T */
33159243Sobrien#endif /* apollo */
33259243Sobrien
33359243Sobrien/***
33459243Sobrien *** a pdp/11, running 2BSD
33559243Sobrien ***/
33659243Sobrien#ifdef pdp11
33759243Sobrien# ifndef _PID_T
33859243Sobrien#  define _PID_T
33959243Sobrien# endif /* _PID_T */
34059243Sobrien#endif /* pdp11 */
34159243Sobrien
34259243Sobrien/***
34359243Sobrien *** a Harris, running CX/UX
34459243Sobrien ***/
34559243Sobrien#ifdef _CX_UX
34659243Sobrien# ifndef _PID_T
34759243Sobrien#  define _PID_T
34859243Sobrien# endif /* _PID_T */
34959243Sobrien#endif /* _CX_UX */
35059243Sobrien
35159243Sobrien/***
35259243Sobrien *** Catch all for non POSIX and/or non ANSI systems.
35359243Sobrien *** Systems up to spec *should* define these automatically
35459243Sobrien *** I am open to suggestions on how to do this correctly!
35559243Sobrien ***/
35659243Sobrien
35759243Sobrien#ifndef POSIX
35859243Sobrien
35959243Sobrien# ifndef _PID_T
36059243Sobrien#  define _PID_T
36159243Sobrien    typedef int pid_t;
36259243Sobrien# endif /* _PID_T */
36359243Sobrien
36459243Sobrien# ifndef _SPEED_T
36559243Sobrien#  define _SPEED_T
36659243Sobrien    typedef unsigned int speed_t;
36759243Sobrien# endif /* _SPEED_T */
36859243Sobrien
36959243Sobrien# ifndef _PTR_T
37059243Sobrien#  define _PTR_T
37159243Sobrien    typedef char * ptr_t;
37259243Sobrien#endif /* _PTR_T */
37359243Sobrien
37459243Sobrien# ifndef _IOCTL_T
37559243Sobrien#  define _IOCTL_T
37659243Sobrien    typedef char * ioctl_t;	/* Third arg of ioctl */
37759243Sobrien# endif /* _IOCTL_T */
37859243Sobrien
37959243Sobrien#endif /* ! POSIX */
38059243Sobrien
38159243Sobrien
38259243Sobrien
38359243Sobrien/***
38459243Sobrien *** This is our own junk types.
38559243Sobrien ***/
38659243Sobrien#ifndef _PTR_T
38759243Sobrien# define _PTR_T
38859243Sobrien    typedef void * ptr_t;
38959243Sobrien#endif /* _PTR_T */
39059243Sobrien
39159243Sobrien#ifndef _IOCTL_T
39259243Sobrien# define _IOCTL_T
39359243Sobrien    typedef void * ioctl_t;	/* Third arg of ioctl */
39459243Sobrien#endif /* _IOCTL_T */
39559243Sobrien
39659243Sobrien#endif /* _h_sh_types */
397