Source:SLASH'EM 0.0.7E7F2/unixconf.h

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

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

1.   /*	SCCS Id: @(#)unixconf.h 3.4	1999/07/02	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifdef UNIX 6.   #ifndef UNIXCONF_H 7.   #define UNIXCONF_H 8.    9.     10.   /*  11.    * Some include files are in a different place under SYSV 12.   *	BSD		   SYSV 13.   * 		  14. * 		 15. * 16.    * Some routines are called differently 17.   * index		strchr 18.   * rindex		strrchr 19.   *  20.    */  21.    22.   /* define exactly one of the following four choices */ 23.  /* #define BSD 1 */	/* define for 4.n/Free/Open/Net BSD  */ 24.  			/* also for relatives like SunOS 4.x, DG/UX, and */ 25.  			/* older versions of Linux */ 26.  /* #define ULTRIX */	/* define for Ultrix v3.0 or higher (but not lower) */ 27.  			/* Use BSD for < v3.0 */ 28.  			/* "ULTRIX" not to be confused with "ultrix" */ 29.  #define SYSV		/* define for System V, Solaris 2.x, newer versions */ 30.  			/* of Linux */ 31.  /* #define HPUX */	/* Hewlett-Packard's Unix, version 6.5 or higher */ 32.  			/* use SYSV for < v6.5 */ 33.   34.    35.   /* define any of the following that are appropriate */ 36.  #define SVR4		/* use in addition to SYSV for System V Release 4 */ 37.  			/* including Solaris 2+ */ 38.  #define NETWORK		/* if running on a networked system */ 39.  			/* e.g. Suns sharing a playground through NFS */ 40.  /* #define SUNOS4 */	/* SunOS 4.x */ 41.  /* #define LINUX */	/* Another Unix clone */ 42.  /* #define CYGWIN32 */	/* Unix on Win32 -- use with case sensitive defines */ 43.  /* #define GENIX */	/* Yet Another Unix Clone */ 44.  /* #define HISX */	/* Bull Unix for XPS Machines */ 45.  /* #define BOS */	/* Bull Open Software - Unix for DPX/2 Machines */ 46.  /* #define UNIXPC */	/* use in addition to SYSV for AT&T 7300/3B1 */ 47.  /* #define AIX_31 */	/* In AIX 3.1 (IBM RS/6000) use BSD ioctl's to gain 48.  			 * job control (note that AIX is SYSV otherwise) 49.  			 * Also define this for AIX 3.2 */ 50.   51.   #define TERMINFO	/* uses terminfo rather than termcap */ 52.  			/* Should be defined for most SYSV, SVR4 (including  53.   			 * Solaris 2+), HPUX, and Linux systems. In 54. * particular, it should NOT be defined for the UNIXPC 55.  			 * unless you remove the use of the shared library in  56. * the Makefile */ 57.  #define TEXTCOLOR	/* Use System V r3.2 terminfo color support */ 58.  			/* and/or ANSI color support on termcap systems */ 59.  			/* and/or X11 color */ 60.  #define POSIX_JOB_CONTROL /* use System V / Solaris 2.x / POSIX job control */ 61.  			/* (e.g., VSUSP) */ 62.  #define POSIX_TYPES	/* use POSIX types for system calls and termios */ 63.  			/* Define for many recent OS releases, including 64.  			 * those with specific defines (since types are  65.   			 * changing toward the standard from earlier chaos). 66.  			 * For example, platforms using the GNU libraries, 67.  			 * Linux, Solaris 2.x  68. */ 69.    70.   /* #define OPENWINBUG */	/* avoid a problem using OpenWindows 3.0 for 71.  				   X11 on SunOS 4.1.x, x>= 2. Do not define 72.  				   for other X11 implementations. */ 73.   /* #define PYRAMID_BUG */	/* avoid a bug on the Pyramid */ 74.  /* #define BSD_43_BUG */	/* for real 4.3BSD cc's without schain botch fix */ 75.  /* #define MICROPORT_BUG */	/* problems with large arrays in structs */ 76.  /* #define MICROPORT_286_BUG */ /* changes needed in termcap.c to get it to  77. run with Microport Sys V/AT version 2.4. 78.  				   By Jay Maynard */ 79.  /* #define AIXPS_2BUG */	/* avoid a problem with little_to_big optimization */ 80.   81.   /* #define RANDOM */		/* if neither random/srandom nor lrand48/srand48 82.  				   is available from your system */ 83.   84.   /* see sys/unix/snd86unx.shr for more information on these */ 85.  /* #define UNIX386MUSIC */	/* play real music through speaker on systems 86.  				   with music driver installed */ 87.  /* #define VPIX_MUSIC */	/* play real music through speaker on systems 88.  				   with built-in VPIX support */ 89.   90.   /*  91.    * ALI 92.   *  93.    * File areas can be used to place different Slash'EM files in different 94.   * directories. This is necessary to comply with Linux's FSSTD 1.2 and its 95.   * replacement FHS 2.0. Currently, these are only implemented for UNIX, but 96.   * other ports could follow suit by including similar defines in their port 97.   * specific config files and implementing the relevent functions. 98.   *  99.    * File areas are supposed to be opaque; that is the core system does not 100.  * interpret them in any way, it simply passes them to the port specific 101.  * functions to handle. This means that while the obvious mapping is onto 102.  * directories, there is nothing in the core code that assumes this. Non-UNIX 103.  * ports in particular may find that a more general mapping is desirable. 104.  *  105.   * The following file areas are supported: 106.  *  107.   * FILE_AREA_SAVE	For save files (R/W) 108.  * FILE_AREA_BONES	For bones files (R/W) 109.  * FILE_AREA_LEVL	For level files (R/W) 110.  * FILE_AREA_VAR	For other files which may be modified by Slash'EM  111. * FILE_AREA_SHARE	For read-only, architechure independent, files 112.  * FILE_AREA_UNSHARE	For read-only, architechure dependent, files 113.  * FILE_AREA_DOC	For human-readable documentation 114.  */  115.   116.  /* #define FILE_AREAS */		/* Use file areas */ 117.  118.  #ifdef FILE_AREAS 119.  120.  /*  121.   * File areas compatible with Linux's FSSTND 1.2. 122.  * Note: This has been superceeded by FHS 2.0, but is included because 123.  * many systems still seem to use it. 124.  */  125.   126.  /* #define FILE_AREA_VAR	"/var/lib/games/slashem/" */ 127. /* #define FILE_AREA_SAVE	"/var/lib/games/slashem/save/" */ 128. /* #define FILE_AREA_SHARE	"/usr/lib/games/slashem/" */ 129. /* #define FILE_AREA_UNSHARE	"/usr/lib/games/slashem/" */ 130. /* #define FILE_AREA_DOC	"/usr/doc/slashem/" */ 131.  132.  /*  133.   * File areas compatible with FHS 2.0 134.  */  135.   136.  #define FILE_AREA_VAR		"/var/games/slashem/" 137. #define FILE_AREA_SAVE		"/var/games/slashem/save/" 138. #define FILE_AREA_SHARE		"/usr/share/games/slashem/" 139. #define FILE_AREA_UNSHARE	"/usr/lib/games/slashem/" 140. #define FILE_AREA_DOC		"/usr/share/doc/slashem/" 141.  142.  #define FILE_AREA_BONES		FILE_AREA_VAR 143. #define FILE_AREA_LEVL		FILE_AREA_VAR 144.  145.  #endif /* FILE_AREAS */ 146.  147.  /*  148.   * The next two defines are intended mainly for the Andrew File System, 149.  * which does not allow hard links. If NO_FILE_LINKS is defined, lock files 150.  * will be created in LOCKDIR using open instead of in the playground using 151.  * link. 152.  *		Ralf Brown, 7/26/89 (from v2.3 hack of 10/10/88) 153.  */  154.   155.  /* #define NO_FILE_LINKS */	/* if no hard links */ 156.  157.  #ifdef NO_FILE_LINKS 158. # ifdef FILE_AREAS 159. # define LOCKDIR FILE_AREA_VAR			/* where to put locks */ 160. # else 161. # define LOCKDIR "/usr/games/lib/nethackdir"	/* where to put locks */ 162. # endif 163. #endif 164.  165.  /*  166.   * Define DEF_PAGER as your default pager, e.g. "/bin/cat" or "/usr/ucb/more" 167.  * If defined, it can be overridden by the environment variable PAGER. 168.  * Hack will use its internal pager if DEF_PAGER is not defined. 169.  * (This might be preferable for security reasons.) 170.  * #define DEF_PAGER	".../mydir/mypager" 171.  */  172.   173.  /*  174.   * If you want the static parts of your playground on a read-only file 175.  * system, define VAR_PLAYGROUND to be where the variable parts are kept. 176.  */  177.  /* #define VAR_PLAYGROUND "/var/lib/games/nethack" */ 178.  179.   180.   181.  /*  182.   * Define PORT_HELP to be the name of the port-specfic help file. 183.  * This file is found in HACKDIR. 184.  * Normally, you shouldn't need to change this. 185.  * There is currently no port-specific help for Unix systems. 186.  */  187.  /* #define PORT_HELP "Unixhelp" */ 188.  189.  #ifdef TTY_GRAPHICS 190. /*  191.   * To enable the `timed_delay' option for using a timer rather than extra 192.  * screen output when pausing for display effect. Requires that `msleep' 193.  * function be available (with time argument specified in milliseconds). 194.  * Various output devices can produce wildly varying delays when the 195.  * "extra output" method is used, but not all systems provide access to  196. * a fine-grained timer. 197.  */  198.  /* #define TIMED_DELAY */	/* usleep */ 199.  200.  # ifdef TEXTCOLOR 201. #  define VIDEOSHADES 202. # endif 203. #endif 204.  205.  /*  206.   * If you define MAIL, then the player will be notified of new mail 207.  * when it arrives. If you also define DEF_MAILREADER then this will 208.  * be the default mail reader, and can be overridden by the environment 209.  * variable MAILREADER; otherwise an internal pager will be used. 210.  * A stat system call is done on the mailbox every MAILCKFREQ moves. 211.  */  212.   213.  #define MAIL			/* Deliver mail during the game */ 214.  215.  /* The Andrew Message System does mail a little differently from normal 216.  * UNIX. Mail is deposited in the user's own directory in ~/Mailbox 217.  * (another directory). MAILBOX is the element that will be added on to 218. * the user's home directory path to generate the Mailbox path - just in 219. * case other Andrew sites do it differently from CMU. 220.  *  221.   *		dan lovinger 222.  *		dl2n+@andrew.cmu.edu (dec 19 1989) 223.  */  224.   225.  /* #define AMS */		/* use Andrew message system for mail */ 226.  227.  /* NO_MAILREADER is for kerberos authenticating filesystems where it is  228. * essentially impossible to securely exec child processes, like mail 229.  * readers, when the game is running under a special token. 230.  *  231.   *	       dan 232.  */  233.   234.  /* #define NO_MAILREADER */	/* have mail daemon just tell player of mail */ 235.  236.  #ifdef	MAIL 237. # if defined(BSD) || defined(ULTRIX) 238. #  ifdef AMS 239. #define AMS_MAILBOX	"/Mailbox" 240. #  else 241. #   if defined(__FreeBSD__) || defined(__OpenBSD__) 242. #define DEF_MAILREADER "/usr/bin/mail" 243. #   else 244. #define DEF_MAILREADER	"/usr/ucb/Mail" 245. #   endif 246. #  endif 247. #else 248. # if (defined(SYSV) || defined(DGUX) || defined(HPUX)) && !defined(LINUX) 249. #  if defined(M_XENIX) 250. #define DEF_MAILREADER	"/usr/bin/mail" 251. #  else 252. #   ifdef __sgi 253. #define DEF_MAILREADER	"/usr/sbin/Mail" 254. #   else 255. #define DEF_MAILREADER	"/usr/bin/mailx" 256. #   endif 257. #  endif 258. # else 259. #define DEF_MAILREADER	"/bin/mail" 260. # endif 261. #endif 262.  263.  #define MAILCKFREQ	50 264. #endif	/* MAIL */ 265.  266.   267.   268.  #ifdef COMPRESS 269. /* Some implementations of compress need a 'quiet' option. 270.  * If you've got one of these versions, put -q here. 271.  * You can also include any other strange options your compress needs. 272.  * If you have a normal compress, just leave it commented out. 273.  */  274.  /* #define COMPRESS_OPTIONS "-q" */ 275. #endif 276.  277.  #define FCMASK	0660	/* file creation mask */ 278.  279.   280.  /*  281.   * The remainder of the file should not need to be changed. 282.  */  283.   284.  #ifdef _AUX_SOURCE 285. # ifdef AUX /* gcc ? */ 286.  #  define _SYSV_SOURCE 287. #  define _BSD_SOURCE 288. #else 289. #  define AUX 290. # endif 291. #endif /* _AUX_SOURCE */ 292.  293.  #if defined(LINUX) || defined(bsdi) 294. # ifndef POSIX_TYPES 295. #  define POSIX_TYPES 296. # endif 297. # ifndef POSIX_JOB_CONTROL 298. #  define POSIX_JOB_CONTROL 299. # endif 300. #endif 301.  302.  /*  303.   * BSD/ULTRIX systems are normally the only ones that can suspend processes. 304.  * Suspending NetHack processes cleanly should be easy to add to other systems 305.  * that have SIGTSTP in the Berkeley sense. Currently the only such systems 306.  * known to work are HPUX and AIX 3.1; other systems will probably require 307.  * tweaks to unixtty.c and ioctl.c.  308. * 309.   * POSIX defines a slightly different type of job control, which should be  310. * equivalent for NetHack's purposes. POSIX_JOB_CONTROL should work on 311. * various recent SYSV versions (with possibly tweaks to unixtty.c again). 312.  */  313.  #ifndef POSIX_JOB_CONTROL 314. # if defined(BSD) || defined(ULTRIX) || defined(HPUX) || defined(AIX_31) 315. #  define BSD_JOB_CONTROL 316. # else 317. #  if defined(SVR4) 318. #   define POSIX_JOB_CONTROL 319. #  endif 320. # endif 321. #endif 322. #if defined(BSD_JOB_CONTROL) || defined(POSIX_JOB_CONTROL) || defined(AUX) 323. #define SUSPEND		/* let ^Z suspend the game */ 324. #endif 325.  326.   327.  #if defined(BSD) || defined(ULTRIX) 328. #include   329. #else 330. #include   331. #endif 332.  333.  #define HLOCK	"perm"	/* an empty file used for locking purposes */ 334. #define HLOCK_AREA	FILE_AREA_VAR 335.  336.  #ifndef REDO 337. #define Getchar nhgetch 338. #endif 339. #define tgetch getchar 340.  341.  #define SHELL		/* do not delete the '!' command */ 342.  343.  /* -AJA- Escaping to a shell doesn't work when SDL port is running 344.  *       fullscreen (makes the computer seem frozen). Undefining 345.  *       `SHELL' is a bit blunt though...  346. */ 347.  #if defined(GL_GRAPHICS) || defined(SDL_GRAPHICS) 348. #undef SHELL 349. #endif 350.  351.  #include "system.h"  352. 353. #if defined(POSIX_TYPES) || defined(__GNUC__) 354. #include   355. #include  356. #endif 357.  358.  #if defined(POSIX_TYPES) || defined(__GNUC__) || defined(BSD) || defined(ULTRIX) 359. #include   360. #endif 361.  362.  #if defined(BSD) || defined(ULTRIX) 363. # if !defined(DGUX) && !defined(SUNOS4) 364. #define memcpy(d, s, n)		bcopy(s, d, n)  365. #define memcmp(s1, s2, n)	bcmp(s2, s1, n) 366. # endif 367. # ifdef SUNOS4 368. #include   369. # endif 370. #else	/* therefore SYSV */ 371. # ifndef index	/* some systems seem to do this for you */ 372. #define index	strchr 373. # endif 374. # ifndef rindex 375. #define rindex	strrchr 376. # endif 377. #endif 378.  379.  /* Use the high quality random number routines. */ 380.  #if defined(BSD) || defined(LINUX) || defined(ULTRIX) || defined(CYGWIN32) || defined(RANDOM) 381. #define Rand	random 382. #else 383. #define Rand	lrand48 384. #endif 385.  386.  #ifdef TIMED_DELAY 387. # if defined(SUNOS4) || defined(LINUX) || defined(SVR4) /* [max] added SVR4 */ 388. # define msleep(k) usleep((k)*1000) 389. # endif 390. # ifdef ULTRIX 391. # define msleep(k) napms(k) 392. # endif 393. #endif 394.  395.  #ifdef hc	/* older versions of the MetaWare High-C compiler define this */ 396. # ifdef __HC__ 397. #  undef __HC__ 398. # endif 399. # define __HC__ hc  400. # undef hc 401. #endif 402.  403.  #if defined(GNOME_GRAPHICS) 404. #if defined(LINUX) 405. # include   406. # if defined(__NR_getresuid) && defined(__NR_getresgid)	/* ie., >= v2.1.44 */ 407. #  define GETRES_SUPPORT 408. # endif 409. #else 410. # if defined(BSD) || defined(SVR4) 411. /*  412.   * [ALI] We assume that SVR4 means we can safely include syscall.h  413. * (although it's really a BSDism). This is certainly true for Solaris 2.5, 414.  * Solaris 7, Solaris 8 and Compaq Tru64 5.1 415.  * Later BSD systems will have the getresid system calls. 416.  */  417.  # include   418. # if (defined (SYS_getuid) || defined(SYS_getresuid)) && \ 419.   (defined(SYS_getgid) || defined(SYS_getresgid)) 420. #  define GETRES_SUPPORT 421. # endif 422. # endif	/* BSD || SVR4 */ 423. #endif	/* LINUX */ 424. #endif	/* GNOME_GRAPHICS */ 425.  426.  #if defined(USE_REGEX_MATCH) 427. # if defined(__FreeBSD__) || defined(__OpenBSD__) 428. #  define POSIX_REGEX 429. # else 430. #  define GNU_REGEX 431. # endif 432. #endif 433.  434.  #endif /* UNIXCONF_H */ 435. #endif /* UNIX */