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