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