Source:SLASH'EM 0.0.7E7F2/system.h
Revision as of 18:25, 7 March 2008 by Kernigh bot (talk | contribs) (SLASH'EM 0.0.7E7F2/system.h moved to Source:SLASH'EM 0.0.7E7F2/system.h: Robot: moved page)
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.
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.
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 <sys/types.h> 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 <types.h> 17. #else 18. # ifndef AMIGA 19. # ifndef __WATCOMC__ 20. #include <sys/types.h> 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.h> /* time_t is not in <sys/types.h> */ 38. #endif 39. #if defined(ULTRIX) && !(defined(ULTRIX_PROTO) || defined(NHSTDC)) 40. /* The Ultrix v3.0 <sys/types.h> 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 <sys/file.h> 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 <unixio.h> */ 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 <string.h> 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. /* <X11/Intrinsic.h> #includes <string[s].h>; so does defining POSIX_TYPES */ 400. 401. #if (defined(ULTRIX) || defined(NeXT)) && defined(__GNUC__) 402. #include <strings.h> 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 <time.h> */ 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 */