Source:SLASH'EM 0.0.7E7F2/system.h

Below is the full text to system.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/system.h#line123 ]], for example.

The latest source code for vanilla NetHack is at Source code.

1.   /*	SCCS Id: @(#)system.h	3.4	2001/12/07	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef SYSTEM_H 6.   #define SYSTEM_H 7.    8.    #if !defined(__cplusplus) && !defined(__GO32__) 9.    10.   #define E extern 11.   12.   /* some old  may not define off_t and size_t; if your system is  13. * one of these, define them by hand below 14.   */  15.   #if (defined(VMS) && !defined(__GNUC__)) || defined(MAC) 16.  #include   17. #else 18.  # ifndef AMIGA 19.  #  ifndef       __WATCOMC__ 20.  #include   21. # endif 22.  # endif 23.  #endif 24.   25.   #if (defined(MICRO) && !defined(TOS)) || defined(ANCIENT_VAXC) 26.  # if !defined(_SIZE_T) && !defined(__size_t) /* __size_t for CSet/2 */ 27.  #  define _SIZE_T 28.  #  if !((defined(MSDOS) || defined(OS2)) && defined(_SIZE_T_DEFINED)) /* MSC 5.1 */ 29.  #   if !(defined(__GNUC__) && defined(AMIGA)) 30.  typedef unsigned int	size_t; 31.  #   endif 32.  #  endif 33.  # endif 34.  #endif	/* MICRO && !TOS */ 35.   36.   #if defined(__TURBOC__) || defined(MAC) 37.  #include 	/* time_t is not in  */ 38.  #endif 39.  #if defined(ULTRIX) && !(defined(ULTRIX_PROTO) || defined(NHSTDC)) 40.  /* The Ultrix v3.0  seems to be very wrong. */ 41.   # define time_t long 42.  #endif 43.   44.   #if defined(ULTRIX) || defined(VMS) 45.  # define off_t long 46.  #endif 47.  #if defined(AZTEC) || defined(THINKC4) || defined(__TURBOC__) 48.  typedef long	off_t; 49.  #endif 50.   51.   #endif /* !__cplusplus && !__GO32__ */ 52.   53.   /* You may want to change this to fit your system, as this is almost 54.   * impossible to get right automatically. 55.   * This is the type of signal handling functions. 56.   */  57.   #if !defined(OS2) && (defined(_MSC_VER) || defined(__TURBOC__) || defined(__SC__) || defined(WIN32)) 58.  # define SIG_RET_TYPE void (__cdecl *)(int) 59.  #endif 60.  #ifndef SIG_RET_TYPE 61.  # if defined(NHSTDC) || defined(POSIX_TYPES) || defined(OS2) || defined(__DECC) 62.  #  define SIG_RET_TYPE void (*)(int) 63.  # endif 64.  #endif 65.  #ifndef SIG_RET_TYPE 66.  # if defined(ULTRIX) || defined(SUNOS4) || defined(SVR3) || defined(SVR4) 67.  	/* SVR3 is defined automatically by some systems */ 68.  #  define SIG_RET_TYPE void (*) 69.  # endif 70.  #endif 71.  #ifndef SIG_RET_TYPE	/* BSD, SIII, SVR2 and earlier, Sun3.5 and earlier */ 72.  # define SIG_RET_TYPE int (*) 73.  #endif 74.   75.   #if !defined(__cplusplus) && !defined(__GO32__) 76.   77.   #if defined(BSD) || defined(ULTRIX) || defined(RANDOM) 78.  # ifdef random 79.  # undef random 80.  # endif 81.  # if !defined(__SC__) && !defined(__CYGWIN__) && !defined(LINUX) 82.  E  long NDECL(random); 83.  # endif 84.  # if (!defined(SUNOS4) && !defined(bsdi) && !defined(__FreeBSD__)) || defined(RANDOM) 85.  E void FDECL(srandom, (unsigned int)); 86.  # else 87.  #  if !defined(bsdi) && !defined(LINUX) && !defined(__CYGWIN__) && !defined(__FreeBSD__) 88.  E int FDECL(srandom, (unsigned int)); 89.  #  endif 90.  # endif 91.  #else 92.  E long FDECL(lrand48, (void)); 93.  E void FDECL(srand48, (long)); 94.  #endif /* BSD || ULTRIX || RANDOM */ 95.   96.   #if !defined(BSD) || defined(ultrix) 97.  			/* real BSD wants all these to return int */ 98.  # ifndef MICRO 99.  E void FDECL(exit, (int)); 100. # endif /* MICRO */ 101. /* compensate for some CSet/2 bogosities */ 102. # if defined(OS2_CSET2) && defined(OS2_CSET2_VER_2) 103. #  define open	  _open 104. #  define close   _close 105. #  define read	  _read 106. #  define write   _write 107. #  define lseek   _lseek 108. #  define chdir   _chdir 109. #  define getcwd  _getcwd 110. #  define setmode _setmode 111. # endif /* OS2_CSET2 && OS2_CSET2_VER_2 */ 112. /* If flex thinks that we're not __STDC__ it declares free to return 113.    int and we die. We must use __STDC__ instead of NHSTDC because 114.    the former is naturally what flex tests for. */ 115.  # if defined(__STDC__) || !defined(FLEX_SCANNER) 116. #  ifndef OS2_CSET2 117. #   ifndef MONITOR_HEAP 118. E void FDECL(free, (genericptr_t)); 119. #   endif 120. #  endif 121. # endif 122. #if !defined(__SASC_60) && !defined(_DCC) && !defined(__SC__) 123. # if defined(AMIGA) && !defined(AZTEC_50) && !defined(__GNUC__) 124. E int FDECL(perror, (const char *)); 125. # else 126. #  if !(defined(ULTRIX_PROTO) && defined(__GNUC__)) 127. E void FDECL(perror, (const char *)); 128. #  endif 129. # endif 130. #endif 131. #endif 132. #ifndef NeXT 133. #ifdef POSIX_TYPES 134. E void FDECL(qsort, (genericptr_t,size_t,size_t, 135. 		     int(*)(const genericptr,const genericptr))); 136. #else 137. # if (defined(BSD) || defined(ULTRIX)) && (!defined(LINUX) && !defined(__CYGWIN__)) 138. E  int qsort; 139. # else 140. #  if !defined(LATTICE) && !defined(AZTEC_50) 141. E   void FDECL(qsort, (genericptr_t,size_t,size_t, 142. 		       int(*)(const genericptr,const genericptr))); 143. #  endif 144. # endif 145. #endif 146. #endif /* NeXT */ 147.  148.  #ifndef __SASC_60 149. #if !defined(AZTEC_50) && !defined(__GNUC__) 150. /* may already be defined */ 151.  152.  # ifdef ULTRIX 153. #  ifdef ULTRIX_PROTO 154. E int FDECL(lseek, (int,off_t,int)); 155. #  else 156. E long FDECL(lseek, (int,off_t,int)); 157. #  endif 158.   /* Ultrix 3.0 man page mistakenly says it returns an int. */ 159.  E int FDECL(write, (int,char *,int)); 160. E int FDECL(link, (const char *, const char*)); 161. # else 162. # ifndef bsdi 163. E long FDECL(lseek, (int,long,int)); 164. # endif 165. #  if defined(POSIX_TYPES) || defined(__TURBOC__) || defined(_MSC_VER) 166. #   ifndef bsdi 167. E int FDECL(write, (int, const void *,unsigned)); 168. #   endif 169. #  else 170. #   ifndef __MWERKS__	/* metrowerks defines write via universal headers */ 171. E int FDECL(write, (int,genericptr_t,unsigned)); 172. #   endif 173. #  endif 174. # endif /* ULTRIX */ 175.  176.  # ifdef OS2_CSET2	/* IBM CSet/2 */ 177. #  ifdef OS2_CSET2_VER_1 178. E int FDECL(unlink, (char *)); 179. #  else 180. #  ifndef __SC__ 181. E int FDECL(unlink, (const char *)); 182. #  else 183. E int FDECL(unlink, (const char *)); /* prototype is ok in ver >= 2 */ 184. #  endif 185. #  endif 186. # endif 187.  188.  #endif /* AZTEC_50 && __GNUC__ */ 189.  190.  #ifdef MAC 191. #ifndef __CONDITIONALMACROS__	/* universal headers */ 192. E int FDECL(close, (int));		/* unistd.h */ 193. E int FDECL(read, (int, char *, int));	/* unistd.h */ 194. E int FDECL(chdir, (const char *));	/* unistd.h */ 195. E char *FDECL(getcwd, (char *,int));	/* unistd.h */ 196. #endif 197.  198.  E int FDECL(open, (const char *,int)); 199. #endif 200.  201.  #if defined(MICRO) 202. E int FDECL(close, (int)); 203. #ifndef __EMX__ 204. E int FDECL(read, (int,genericptr_t,unsigned int)); 205. #endif 206. E int FDECL(open, (const char *,int,...)); 207. E int FDECL(dup2, (int, int)); 208. E int FDECL(setmode, (int,int)); 209. E int NDECL(kbhit); 210. # if !defined(_DCC) && !defined(__MINGW32__) 211. #  if defined(__TURBOC__) || defined(_MSC_VER) 212. E int FDECL(chdir, (const char *)); 213. #  else 214. #   ifndef __EMX__ 215. E int FDECL(chdir, (char *)); 216. #   endif 217. #  endif 218. #  ifndef __EMX__ 219. E char *FDECL(getcwd, (char *,int)); 220. #  endif 221. # endif /* !_DCC */ 222. #endif 223.  224.  #ifdef ULTRIX 225. E int FDECL(close, (int)); 226. E int FDECL(atoi, (const char *)); 227. E int FDECL(chdir, (const char *)); 228. # if !defined(ULTRIX_CC20) && !defined(__GNUC__) 229. E int FDECL(chmod, (const char *,int)); 230. E mode_t FDECL(umask, (int)); 231. # endif 232. E int FDECL(read, (int,genericptr_t,unsigned)); 233. /* these aren't quite right, but this saves including lots of system files */ 234. E int FDECL(stty, (int,genericptr_t)); 235. E int FDECL(gtty, (int,genericptr_t)); 236. E int FDECL(ioctl, (int, int, char*)); 237. E int FDECL(isatty, (int));	/* 1==yes, 0==no, -1==error */ 238. #include   239. # if defined(ULTRIX_PROTO) || defined(__GNUC__) 240. E int NDECL(fork); 241. # else 242. E long NDECL(fork); 243. # endif 244. #endif /* ULTRIX */ 245.  246.  #ifdef VMS 247. # ifndef abs 248. E int FDECL(abs, (int)); 249. # endif 250. E int FDECL(atexit, (void (*)(void))); 251. E int FDECL(atoi, (const char *)); 252. E int FDECL(chdir, (const char *)); 253. E int FDECL(chown, (const char *,unsigned,unsigned)); 254. # ifdef __DECC_VER 255. E int FDECL(chmod, (const char *,mode_t)); 256. E mode_t FDECL(umask, (mode_t)); 257. # else 258. E int FDECL(chmod, (const char *,int)); 259. E int FDECL(umask, (int)); 260. # endif 261. /* #include  */ 262. E int FDECL(close, (int)); 263. E int VDECL(creat, (const char *,unsigned,...)); 264. E int FDECL(delete, (const char *)); 265. E int FDECL(fstat, ( /*_ int, stat_t * _*/ )); 266. E int FDECL(isatty, (int));	/* 1==yes, 0==no, -1==error */ 267. E long FDECL(lseek, (int,long,int)); 268. E int VDECL(open, (const char *,int,unsigned,...)); 269. E int FDECL(read, (int,genericptr_t,unsigned)); 270. E int FDECL(rename, (const char *,const char *)); 271. E int FDECL(stat, ( /*_ const char *,stat_t * _*/ )); 272. E int FDECL(write, (int,const genericptr,unsigned)); 273. #endif 274.  275.  #endif	/* __SASC_60 */ 276.  277.  /* both old & new versions of Ultrix want these, but real BSD does not */ 278. #ifdef ultrix 279. E void abort; 280. E void bcopy; 281. # ifdef ULTRIX 282. E int FDECL(system, (const char *)); 283. #  ifndef _UNISTD_H_ 284. E int FDECL(execl, (const char *, ...)); 285. #  endif 286. # endif 287. #endif 288. #ifdef MICRO 289. E void NDECL(abort); 290. E void FDECL(_exit, (int)); 291. E int FDECL(system, (const char *)); 292. #endif 293. #if defined(HPUX) && !defined(_POSIX_SOURCE) 294. E long NDECL(fork); 295. #endif 296.  297.  #ifdef POSIX_TYPES 298. /* The POSIX string.h is required to define all the mem* and str* functions */ 299. #include   300. #else 301. #if defined(SYSV) || defined(VMS) || defined(MAC) || defined(SUNOS4) 302. # if defined(NHSTDC) || (defined(VMS) && !defined(ANCIENT_VAXC)) 303. #  if !defined(_AIX32) && !(defined(SUNOS4) && defined(__STDC__)) && !defined(LINUX) 304. /* Solaris unbundled cc (acc) */ 305. E int FDECL(memcmp, (const void *,const void *,size_t)); 306. E void *FDECL(memcpy, (void *, const void *, size_t)); 307. E void *FDECL(memset, (void *, int, size_t)); 308. #  endif 309. # else 310. #  ifndef memcmp	/* some systems seem to macro these back to b* */ 311. E int memcmp; 312. #  endif 313. #  ifndef memcpy 314. E char *memcpy; 315. #  endif 316. #  ifndef memset 317. E char *memset; 318. #  endif 319. # endif 320. #else 321. # ifdef HPUX 322. E int FDECL(memcmp, (char *,char *,int)); 323. E void *FDECL(memcpy, (char *,char *,int)); 324. E void *FDECL(memset, (char*,int,int)); 325. # endif 326. #endif 327. #endif /* POSIX_TYPES */ 328.  329.  #if defined(MICRO) && !defined(LATTICE) 330. # if defined(TOS) && defined(__GNUC__) 331. E int FDECL(memcmp, (const void *,const void *,size_t)); 332. E void *FDECL(memcpy, (void *,const void *,size_t)); 333. E void *FDECL(memset, (void *,int,size_t)); 334. # else 335. #  if defined(AZTEC_50) || defined(NHSTDC) || defined(WIN32) 336. E int  FDECL(memcmp, (const void *, const void *, size_t)); 337. E void *FDECL(memcpy, (void *, const void *, size_t)); 338. E void *FDECL(memset, (void *, int, size_t)); 339. #  else 340. E int FDECL(memcmp, (char *,char *,unsigned int)); 341. E char *FDECL(memcpy, (char *,char *,unsigned int)); 342. E char *FDECL(memset, (char*,int,int)); 343. #  endif /* AZTEC_50 || NHSTDC */ 344. # endif /* TOS */ 345. #endif /* MICRO */ 346.  347.  #if defined(BSD) && defined(ultrix)	/* i.e., old versions of Ultrix */ 348. E void sleep; 349. #endif 350. #if defined(ULTRIX) || defined(SYSV) 351. E unsigned sleep(unsigned); 352. #endif 353. #if defined(HPUX) 354. E unsigned int FDECL(sleep, (unsigned int)); 355. #endif 356. #ifdef VMS 357. E int FDECL(sleep, (unsigned)); 358. #endif 359.  360.  E char *FDECL(getenv, (const char *)); 361. E char *getlogin(void); 362. #if defined(HPUX) && !defined(_POSIX_SOURCE) 363. E long NDECL(getuid); 364. E long NDECL(getgid); 365. E long NDECL(getpid); 366. #else 367. # ifdef POSIX_TYPES 368. E pid_t NDECL(getpid); 369. E uid_t NDECL(getuid); 370. E gid_t NDECL(getgid); 371. #  ifdef VMS 372. E pid_t NDECL(getppid); 373. #  endif 374. # else	/*!POSIX_TYPES*/ 375. #  ifndef getpid		/* Borland C defines getpid as a macro */ 376. E int NDECL(getpid); 377. #  endif 378. #  ifdef VMS 379. E int NDECL(getppid); 380. E unsigned NDECL(getuid); 381. E unsigned NDECL(getgid); 382. #  endif 383. #  if defined(ULTRIX) && !defined(_UNISTD_H_) 384. E unsigned NDECL(getuid); 385. E unsigned NDECL(getgid); 386. E int FDECL(setgid, (int)); 387. E int FDECL(setuid, (int)); 388. #  endif 389. # endif	/*?POSIX_TYPES*/ 390. #endif	/*?(HPUX && !_POSIX_SOURCE)*/ 391.  392.  /* add more architectures as needed */ 393. #if defined(HPUX) 394. #define seteuid(x) setreuid(-1, (x)); 395. #endif 396.  397.  /*# string(s).h #*/ 398. #if !defined(_XtIntrinsic_h) && !defined(POSIX_TYPES) 399. /*  #includes ; so does defining POSIX_TYPES */ 400.  401.  #if (defined(ULTRIX) || defined(NeXT)) && defined(__GNUC__) 402. #include   403. #else 404. E char	*FDECL(strcpy, (char *,const char *)); 405. E char	*FDECL(strncpy, (char *,const char *,size_t)); 406. E char	*FDECL(strcat, (char *,const char *)); 407. E char	*FDECL(strncat, (char *,const char *,size_t)); 408. E char	*FDECL(strpbrk, (const char *,const char *)); 409.  410.  # if defined(SYSV) || defined(MICRO) || defined(MAC) || defined(VMS) || defined(HPUX) 411. E char	*FDECL(strchr, (const char *,int)); 412. E char	*FDECL(strrchr, (const char *,int)); 413. # else /* BSD */ 414. E char	*FDECL(index, (const char *,int)); 415. E char	*FDECL(rindex, (const char *,int)); 416. # endif 417.  418.  E int	FDECL(strcmp, (const char *,const char *)); 419. E int	FDECL(strncmp, (const char *,const char *,size_t)); 420. # if defined(MICRO) || defined(MAC) || defined(VMS) 421. E size_t FDECL(strlen, (const char *)); 422. # else 423. # ifdef HPUX 424. E unsigned int	FDECL(strlen, (char *)); 425. #  else 426. #   if !(defined(ULTRIX_PROTO) && defined(__GNUC__)) && !defined(LINUX) 427. E int	FDECL(strlen, (const char *)); 428. #   endif 429. #  endif /* HPUX */ 430. # endif /* MICRO */ 431. #endif /* ULTRIX */ 432.  433.  #endif	/* !_XtIntrinsic_h_ && !POSIX_TYPES */ 434.  435.  #if defined(ULTRIX) && defined(__GNUC__) 436. E char	*FDECL(index, (const char *,int)); 437. E char	*FDECL(rindex, (const char *,int)); 438. #endif 439.  440.  /* Old varieties of BSD have char *sprintf. 441.  * Newer varieties of BSD have int sprintf but allow for the old char *. 442.  * Several varieties of SYSV and PC systems also have int sprintf. 443.  * If your system doesn't agree with this breakdown, you may want to change 444.  * this declaration, especially if your machine treats the types differently. 445.  * If your system defines sprintf, et al, in stdio.h, add to the initial 446.  * #if. 447.  */  448.  #if defined(ULTRIX) || defined(__DECC) || defined(__SASC_60) || defined(WIN32) 449. #define SPRINTF_PROTO 450. #endif 451. #if (defined(SUNOS4) && defined(__STDC__)) || defined(_AIX32) 452. #define SPRINTF_PROTO 453. #endif 454. #if defined(TOS) || defined(AZTEC_50) || defined(__sgi) || defined(__GNUC__) 455. 	/* problem with prototype mismatches */ 456. #define SPRINTF_PROTO 457. #endif 458. #if defined(__MWERKS__) || defined(__SC__) 459. 	/* Metrowerks already has a prototype for sprintf */ 460. # define SPRINTF_PROTO 461. #endif 462.  463.  #ifndef SPRINTF_PROTO 464. # if defined(POSIX_TYPES) || defined(DGUX) || defined(NeXT) || !defined(BSD) 465. E  int FDECL(sprintf, (char *,const char *,...)); 466. # else 467. #  define OLD_SPRINTF 468. E  char *sprintf; 469. # endif 470. #endif 471. #ifdef SPRINTF_PROTO 472. # undef SPRINTF_PROTO 473. #endif 474.  475.  #ifndef __SASC_60 476. #ifdef NEED_VARARGS 477. # if defined(USE_STDARG) || defined(USE_VARARGS) 478. #  if !defined(SVR4) && !defined(apollo) 479. #   if !(defined(ULTRIX_PROTO) && defined(__GNUC__)) 480. #    if !(defined(SUNOS4) && defined(__STDC__)) /* Solaris unbundled cc (acc) */ 481. E int FDECL(vsprintf, (char *, const char *, va_list)); 482. E int FDECL(vfprintf, (FILE *, const char *, va_list)); 483. E int FDECL(vprintf, (const char *, va_list)); 484. #    endif 485. #   endif 486. #  endif 487. # else 488. #  define vprintf	printf 489. #  define vfprintf	fprintf 490. #  define vsprintf	sprintf 491. # endif 492. #endif /* NEED_VARARGS */ 493. #endif 494.  495.   496.  #ifdef MICRO 497. E int FDECL(tgetent, (const char *,const char *)); 498. E void FDECL(tputs, (const char *,int,int (*))); 499. E int FDECL(tgetnum, (const char *)); 500. E int FDECL(tgetflag, (const char *)); 501. E char *FDECL(tgetstr, (const char *,char **)); 502. E char *FDECL(tgoto, (const char *,int,int)); 503. #else 504. # if ! (defined(HPUX) && defined(_POSIX_SOURCE)) 505. E int FDECL(tgetent, (char *,const char *)); 506. E void FDECL(tputs, (const char *,int,int (*))); 507. # endif 508. E int FDECL(tgetnum, (const char *)); 509. E int FDECL(tgetflag, (const char *)); 510. E char *FDECL(tgetstr, (const char *,char **)); 511. E char *FDECL(tgoto, (const char *,int,int)); 512. #endif 513.  514.  #ifdef ALLOC_C 515. E genericptr_t FDECL(malloc, (size_t)); 516. #endif 517.  518.  /* time functions */ 519.  520.  # ifndef LATTICE 521. #  if !(defined(ULTRIX_PROTO) && defined(__GNUC__)) 522. #   ifndef      __WATCOMC__ 523. E struct tm *FDECL(localtime, (const time_t *)); 524. #  endif 525. # endif 526. # endif 527.  528.  # if defined(ULTRIX) || (defined(BSD) && defined(POSIX_TYPES)) || defined(SYSV) || defined(MICRO) || defined(VMS) || defined(MAC) || (defined(HPUX) && defined(_POSIX_SOURCE)) 529. #  ifndef       __WATCOMC__ 530. E time_t FDECL(time, (time_t *)); 531. #  endif 532. # else 533. E long FDECL(time, (time_t *)); 534. # endif /* ULTRIX */ 535.  536.  #ifdef VMS 537. 	/* used in makedefs.c, but missing from gcc-vms's  */ 538. E char *FDECL(ctime, (const time_t *)); 539. #endif 540.  541.   542.  #ifdef MICRO 543. # ifdef abs 544. # undef abs 545. # endif 546. E int FDECL(abs, (int)); 547. # ifdef atoi 548. # undef atoi 549. # endif 550. E int FDECL(atoi, (const char *)); 551. #endif 552.  553.  #undef E  554. 555. #endif /*  !__cplusplus && !__GO32__ */ 556.  557.  #endif /* SYSTEM_H */