1 /* $Header: /src/pub/tcsh/sh.types.h,v 3.38 2000/07/04 19:46:23 christos Exp $ */ 2 /* sh.types.h: Do the necessary typedefs for each system. 3 * Up till now I avoided making this into a separate file 4 * But I just wanted to eliminate the whole mess from sh.h 5 * In reality this should not be here! It is OS and MACHINE 6 * dependent, even between different revisions of OS's... 7 * Ideally there should be a way in c, to find out if something 8 * was typedef'ed, but unfortunately we rely in cpp kludges. 9 * Someday, this file will be removed... 10 * 11 * christos 12 */ 13 /*- 14 * Copyright (c) 1980, 1991 The Regents of the University of California. 15 * All rights reserved. 16 * 17 * Redistribution and use in source and binary forms, with or without 18 * modification, are permitted provided that the following conditions 19 * are met: 20 * 1. Redistributions of source code must retain the above copyright 21 * notice, this list of conditions and the following disclaimer. 22 * 2. Redistributions in binary form must reproduce the above copyright 23 * notice, this list of conditions and the following disclaimer in the 24 * documentation and/or other materials provided with the distribution. 25 * 3. All advertising materials mentioning features or use of this software 26 * must display the following acknowledgement: 27 * This product includes software developed by the University of 28 * California, Berkeley and its contributors. 29 * 4. Neither the name of the University nor the names of its contributors 30 * may be used to endorse or promote products derived from this software 31 * without specific prior written permission. 32 * 33 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 34 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 35 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 36 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 37 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 43 * SUCH DAMAGE. 44 */ 45 #ifndef _h_sh_types 46 #define _h_sh_types 47 48 49 /*** 50 *** LynxOS 2.1 51 ***/ 52 #ifdef Lynx 53 # ifndef _SIGMASK_T 54 # define _SIGMASK_T 55 typedef long sigmask_t; 56 # endif /* _SIGMASK_T */ 57 # ifndef _PID_T 58 # define _PID_T 59 # endif /* _PID_T */ 60 #endif 61 62 /*** 63 *** MachTen 64 ***/ 65 #ifdef __MACHTEN__ 66 # ifndef _PID_T 67 # define _PID_T 68 # endif 69 #endif 70 71 72 /*** 73 *** Suns running sunos3.x - sunos4.1.x 74 ***/ 75 #if (defined(sun) || defined(__sun__)) && SYSVREL == 0 76 /* This used to be long, but lint dissagrees... */ 77 # ifndef _SIGMASK_T 78 # define _SIGMASK_T 79 typedef int sigmask_t; 80 # endif /* _SIGMASK_T */ 81 # ifndef _PTR_T 82 # define _PTR_T 83 # ifdef __GNUC__ 84 typedef void * ptr_t; 85 # else 86 typedef char * ptr_t; 87 # endif /* __GNUC__ */ 88 # endif /* _PTR_T */ 89 # ifndef _SIZE_T 90 # define _SIZE_T 91 # endif /* _SIZE_T */ 92 # ifndef __sys_stdtypes_h 93 # define __sys_stdtypes_h 94 # ifndef __lucid 95 typedef int pid_t; 96 typedef unsigned int speed_t; 97 # endif 98 # endif /* __sys_stdtypes.h */ 99 # ifndef _PID_T 100 # define _PID_T 101 # endif /* _PID_T */ 102 # ifndef _SPEED_T 103 # define _SPEED_T 104 # endif /* _SPEED_T */ 105 # ifndef SUNOS4 106 # ifndef MACH 107 # ifndef _UID_T 108 # define _UID_T 109 typedef int uid_t; 110 # endif /* _UID_T */ 111 # ifndef _GID_T 112 # define _GID_T 113 typedef int gid_t; 114 # endif /* _GID_T */ 115 # endif /* !MACH */ 116 # endif /* !SUNOS4 */ 117 #endif /* (sun || __sun__) && SYSVREL == 0 */ 118 119 120 /*** 121 *** Hp's running hpux 7.0 or 8.0 122 ***/ 123 #ifdef __hpux 124 # ifndef _SIZE_T 125 # define _SIZE_T 126 typedef unsigned int size_t; 127 # endif /* _SIZE_T */ 128 129 # ifndef _PTR_T 130 # define _PTR_T 131 typedef void * ptr_t; 132 # endif /* _PTR_T */ 133 134 # ifndef _PID_T 135 # define _PID_T 136 typedef long pid_t; 137 # endif /* _PID_T */ 138 139 # ifndef _SIGMASK_T 140 # define _SIGMASK_T 141 typedef long sigmask_t; 142 # endif /* _SIGMASK_T */ 143 144 # ifndef _SPEED_T 145 /* I thought POSIX was supposed to protect all typedefs! */ 146 # define _SPEED_T 147 # endif /* _SPEED_T */ 148 149 extern uid_t getuid(), geteuid(); 150 extern gid_t getgid(), getegid(); 151 extern sigmask_t sigblock(); 152 extern sigmask_t sigsetmask(); 153 extern pid_t getpid(); 154 extern pid_t fork(); 155 extern void perror(); 156 extern void _exit(); 157 extern void abort(); 158 extern void qsort(); 159 extern void free(); 160 extern unsigned int alarm(); 161 extern unsigned int sleep(); 162 # if HPUXVERSION < 800 /* XXX: Not true for 8.0 */ 163 extern void sigpause(); 164 extern sigmask_t sigspace(); 165 extern int lstat(); 166 extern int readlink(); 167 extern int sigvector(); 168 extern int gethostname(); 169 extern int ioctl(); 170 extern int nice(); 171 extern char *sbrk(); 172 # endif /* HPUXVERSION < 800 */ 173 #endif /* __hpux */ 174 175 #if (defined(_MINIX) && !defined(_MINIX_VMD)) || defined(__EMX__) || defined(COHERENT) 176 typedef char * caddr_t; 177 #endif /* (_MINIX && !_MINIX_VMD) || __EMX__ || COHERENT */ 178 179 /*** 180 *** hp9000s500 running hpux-5.2 181 ***/ 182 #ifdef hp9000s500 183 # ifndef _PTR_T 184 # define _PTR_T 185 typedef char * ptr_t; 186 # endif /* _PTR_T */ 187 #endif /* hp9000s500 */ 188 189 /*** 190 *** Data General AViiON 88000 or Pentium, running dgux 5.4R3 or R4.11 191 ***/ 192 #ifdef DGUX 193 # ifndef _SIZE_T 194 # define _SIZE_T size_t 195 typedef unsigned int size_t; 196 # endif /* _SIZE_T */ 197 # ifndef _PID_T 198 # define _PID_T 199 # endif /* _PID_T */ 200 #endif /* DGUX */ 201 202 203 /*** 204 *** Intel 386, ISC 386/ix v2.0.2 205 ***/ 206 #ifdef ISC202 207 # ifndef _SIZE_T 208 # define _SIZE_T 209 # endif /* _SIZE_T */ 210 #endif /* ISC202 */ 211 212 /*** 213 *** a PFU/Fujitsu A-xx computer SX/A Edition 60 or later 214 ***/ 215 #ifdef SXA 216 # ifndef _SIZE_T 217 # define _SIZE_T 218 # endif /* _SIZE_T */ 219 #endif /* SXA */ 220 221 /*** 222 *** a stellar 2600, running stellix 2.3 223 ***/ 224 #ifdef stellar 225 # ifndef _SIZE_T 226 # define _SIZE_T 227 # endif /* _SIZE_T */ 228 #endif /* stellar */ 229 230 /*** 231 *** BSD systems, pre and post 4.3 232 ***/ 233 #ifdef BSD 234 # ifndef _SIZE_T 235 # define _SIZE_T 236 # endif /* _SIZE_T */ 237 #endif /* BSD */ 238 239 240 /*** 241 *** BSD RENO advertises itself as POSIX, but 242 *** it is missing speed_t 243 ***/ 244 #ifdef RENO 245 # ifndef _SPEED_T 246 # define _SPEED_T 247 typedef unsigned int speed_t; 248 # endif /* _SPEED_T */ 249 #endif /* RENO */ 250 251 252 /*** 253 *** NeXT OS 3.x 254 ***/ 255 #ifdef NeXT 256 # ifndef _SPEED_T 257 # define _SPEED_T 258 typedef unsigned int speed_t; 259 # endif /* _SPEED_T */ 260 #endif /* NeXT */ 261 262 /*** 263 *** Utah's HPBSD 264 *** some posix & 4.4 BSD changes (pid_t is a short) 265 ***/ 266 #ifdef HPBSD 267 # ifndef _PID_T 268 # define _PID_T 269 # endif /* _PID_T */ 270 #endif /* HPBSD */ 271 272 273 /*** 274 *** Pyramid, BSD universe 275 *** In addition to the size_t 276 ***/ 277 #ifdef pyr 278 # ifndef _PID_T 279 # define _PID_T 280 typedef short pid_t; 281 # endif /* _PID_T */ 282 #endif /* pyr */ 283 284 285 /*** 286 *** rs6000, ibm370, ps2, rt: running flavors of aix. 287 ***/ 288 #ifdef IBMAIX 289 # ifndef _SIZE_T 290 # define _SIZE_T 291 # endif /* _SIZE_T */ 292 # ifndef aiws 293 # ifndef _PID_T 294 # define _PID_T 295 # endif /* _PID_T */ 296 # endif /* !aiws */ 297 # ifdef _IBMR2 298 # ifndef _SPEED_T 299 # define _SPEED_T 300 # endif /* _SPEED_T */ 301 # endif /* _IBMR2 */ 302 #endif /* IBMAIX */ 303 304 305 /*** 306 *** Ultrix... 307 ***/ 308 #if defined(ultrix) || defined(__ultrix) 309 # ifndef _SIZE_T 310 # define _SIZE_T 311 # endif /* _SIZE_T */ 312 # ifndef _PID_T 313 # define _PID_T 314 # endif /* _PID_T */ 315 # ifndef _PTR_T 316 # define _PTR_T 317 typedef void * ptr_t; 318 # endif /* _PTR_T */ 319 #endif /* ultrix || __ultrix */ 320 321 322 /*** 323 *** Silicon graphics IRIS4D running IRIX3_3 324 ***/ 325 #if defined(IRIS4D) && defined(IRIX3_3) 326 # ifndef _PID_T 327 # define _PID_T 328 # endif /* _PID_T */ 329 #endif /* IRIS4D && IRIX3_3 */ 330 331 332 /*** 333 *** Sequent 334 ***/ 335 #ifdef sequent 336 # ifndef _SIZE_T 337 # define _SIZE_T 338 # endif /* _SIZE_T */ 339 #endif /* sequent */ 340 341 /*** 342 *** Apple AUX. 343 ***/ 344 #ifdef OREO 345 # ifndef _SIZE_T 346 # define _SIZE_T 347 # endif /* _SIZE_T */ 348 # ifndef _PID_T 349 # define _PID_T 350 # endif /* _PID_T */ 351 #endif /* OREO */ 352 353 /*** 354 *** Intel 386, Hypercube 355 ***/ 356 #ifdef INTEL 357 # ifndef _SIZE_T 358 # define _SIZE_T 359 # endif /* _SIZE_T */ 360 #endif /* INTEL */ 361 362 /*** 363 *** Concurrent (Masscomp) running RTU 4.1A & RTU 5.0. 364 **** [RTU 6.0 from mike connor] 365 *** Added, DAS DEC-90. 366 ***/ 367 #ifdef masscomp 368 # ifndef _SIZE_T 369 # define _SIZE_T 370 # endif /* _SIZE_T */ 371 # ifdef RTU6 372 # ifndef _PID_T 373 # define _PID_T 374 # endif /* _PID_T */ 375 # ifndef _SPEED_T 376 # define _SPEED_T 377 # endif /* _SPEED_T */ 378 #endif /* RTU6 */ 379 #endif /* masscomp */ 380 381 /*** 382 *** Encore multimax running umax 4.2 383 ***/ 384 #ifdef ns32000 385 # ifdef __TYPES_DOT_H__ 386 # ifndef _SIZE_T 387 # define _SIZE_T 388 # endif /* _SIZE_T */ 389 # endif /* __TYPES_DOT_H__ */ 390 #endif /* ns32000 */ 391 392 /*** 393 *** Silicon Graphics IRIS 3000 394 *** 395 ***/ 396 #ifdef IRIS3D 397 # ifndef _SIZE_T 398 # define _SIZE_T 399 # endif /* _SIZE_T */ 400 #endif /* IRIS3D */ 401 402 /* 403 * Motorola MPC running R32V2 (sysV88) 404 */ 405 #ifdef sysV88 406 # ifndef _SIZE_T 407 # define _SIZE_T 408 # endif /* _SIZE_T */ 409 # ifndef _PID_T 410 # define _PID_T 411 # endif /* _PID_T */ 412 #endif /* sysV88 */ 413 414 /* 415 * Amdahl running UTS (Sys V3) 416 */ 417 #ifdef uts 418 # ifndef _SIZE_T 419 # define _SIZE_T 420 # endif /* _SIZE_T */ 421 # ifndef _PID_T 422 # define _PID_T 423 # endif /* _PID_T */ 424 #endif /* uts */ 425 426 /* 427 * Tektronix 4300 running UTek 4.0 (BSD 4.2) 428 */ 429 #ifdef UTek 430 # ifndef _SIZE_T 431 # define _SIZE_T 432 # endif /* _SIZE_T */ 433 # ifndef _UID_T 434 # define _UID_T 435 typedef int uid_t; 436 # endif /* _UID_T */ 437 # ifndef _GID_T 438 # define _GID_T 439 typedef int gid_t; 440 # endif /* _GID_T */ 441 #endif /* UTek */ 442 443 /* 444 * Tektronix XD88/10 running UTekV (Sys V3) 445 */ 446 #ifdef UTekV 447 # ifndef _SIZE_T 448 # define _SIZE_T 449 # endif /* _SIZE_T */ 450 # ifndef _PID_T 451 # define _PID_T 452 # endif /* _PID_T */ 453 #endif /* UTekV*/ 454 455 /* 456 * UnixPC aka u3b1 457 */ 458 #ifdef UNIXPC 459 # ifdef types_h 460 # ifndef _SIZE_T 461 # define _SIZE_T 462 # endif /* _SIZE_T */ 463 # endif /* types_h */ 464 #endif /* UNIXPC */ 465 466 /* 467 * NS32000 OPUS 468 */ 469 #ifdef OPUS 470 # ifndef _SIZE_T 471 # define _SIZE_T 472 # endif /* _SIZE_T */ 473 #endif /* OPUS */ 474 475 /* 476 * BBN Butterfly gp1000 477 */ 478 #ifdef butterfly 479 # ifndef _PID_T 480 # define _PID_T 481 # endif /* _PID_T */ 482 #endif /* butterfly */ 483 484 /* 485 * Convex 486 */ 487 #ifdef convex 488 # if defined(__SIZE_T) && !defined(_SIZE_T) 489 # define _SIZE_T 490 # endif /* __SIZE_T && !_SIZE_T */ 491 #endif /* convex */ 492 493 /* 494 * Alliant FX-2800/FX-80 495 */ 496 #ifdef alliant 497 # ifndef _PID_T 498 # define _PID_T 499 # endif /* _PID_T */ 500 # ifdef mc68000 501 typedef int pid_t; /* FX-80 */ 502 # else 503 typedef short pid_t; /* FX-2800 */ 504 # endif 505 #endif /* alliant */ 506 507 /* 508 * DNIX 509 */ 510 #ifdef DNIX 511 # ifndef _PID_T 512 # define _PID_T 513 # endif /* _PID_T */ 514 #endif /* DNIX */ 515 516 /* 517 * Apollo running Domain/OS SR10.3 or greater 518 */ 519 #ifdef apollo 520 # ifndef _PID_T 521 # define _PID_T 522 typedef int pid_t; /* Older versions might not like that */ 523 # endif /* _PID_T */ 524 #endif /* apollo */ 525 526 /* 527 * Vax running VMS_POSIX 528 */ 529 #ifdef _VMS_POSIX 530 # ifndef _SIZE_T 531 # define _SIZE_T 532 # endif /* _SIZE_T */ 533 #endif /* _VMS_POSIX */ 534 535 /*** 536 *** a pdp/11, running 2BSD 537 ***/ 538 #ifdef pdp11 539 # ifndef _PID_T 540 # define _PID_T 541 # endif /* _PID_T */ 542 #endif /* pdp11 */ 543 544 /*** 545 *** a Harris, running CX/UX 546 ***/ 547 #ifdef _CX_UX 548 # ifndef _PID_T 549 # define _PID_T 550 # endif /* _PID_T */ 551 #endif /* _CX_UX */ 552 553 /*** 554 *** Catch all for non POSIX and/or non ANSI systems. 555 *** Systems up to spec *should* define these automatically 556 *** I am open to suggestions on how to do this correctly! 557 ***/ 558 559 #ifndef __STDC__ 560 561 # ifndef _SIZE_T 562 # define _SIZE_T 563 typedef int size_t; /* As sun comments ??? : meaning I take it */ 564 # endif /* _SIZE_T */ /* Until we make the world ANSI... */ 565 566 #endif /* ! __STDC__ */ 567 568 #ifndef POSIX 569 570 # ifndef _PID_T 571 # define _PID_T 572 typedef int pid_t; 573 # endif /* _PID_T */ 574 575 # ifndef _SPEED_T 576 # define _SPEED_T 577 typedef unsigned int speed_t; 578 # endif /* _SPEED_T */ 579 580 # ifndef _PTR_T 581 # define _PTR_T 582 typedef char * ptr_t; 583 #endif /* _PTR_T */ 584 585 # ifndef _IOCTL_T 586 # define _IOCTL_T 587 typedef char * ioctl_t; /* Third arg of ioctl */ 588 # endif /* _IOCTL_T */ 589 590 #endif /* ! POSIX */ 591 592 593 594 /*** 595 *** This is our own junk types. 596 ***/ 597 #ifndef _PTR_T 598 # define _PTR_T 599 typedef void * ptr_t; 600 #endif /* _PTR_T */ 601 602 #ifndef _SIGMASK_T 603 # define _SIGMASK_T 604 typedef int sigmask_t; 605 #endif /* _SIGMASK_T */ 606 607 #ifndef _IOCTL_T 608 # define _IOCTL_T 609 typedef void * ioctl_t; /* Third arg of ioctl */ 610 #endif /* _IOCTL_T */ 611 612 #endif /* _h_sh_types */ 613