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