Source:NetHack 3.2.0/unixconf.h

From NetHackWiki
Jump to navigation Jump to search

Below is the full text to unixconf.h from the source code of NetHack 3.2.0. To link to a particular line, write [[NetHack 3.2.0/unixconf.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: @(#)unixconf.h	3.2	95/03/12	*/
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.    * Some include files are in a different place under SYSV
11.    *	BSD		   SYSV
12.    * <sys/time.h>		<time.h>
13.    * <sgtty.h>		<termio.h>
14.    *
15.    * Some routines are called differently
16.    * index		strchr
17.    * rindex		strrchr
18.    *
19.    */
20.   
21.   /* define exactly one of the following four choices */
22.   #define BSD	1	/* define for 4.n BSD  */
23.   			/* also for relatives like SunOS, Linux and DG/UX */
24.   /* #define ULTRIX	/* define for Ultrix v3.0 or higher (but not lower) */
25.   			/* Use BSD for < v3.0 */
26.   			/* "ULTRIX" not to be confused with "ultrix" */
27.   /* #define SYSV		/* define for System V */
28.   /* #define HPUX		/* Hewlett-Packard's Unix, version 6.5 or higher */
29.   			/* use SYSV for < v6.5 */
30.   
31.   
32.   /* define any of the following that are appropriate */
33.   /* #define SVR4		/* use in addition to SYSV for System V Release 4 */
34.   #define NETWORK		/* if running on a networked system */
35.   			/* e.g. Suns sharing a playground through NFS */
36.   #define SUNOS4	/* SunOS 4.x */
37.   /* #define LINUX	/* Another Unix clone */
38.   /* #define GENIX	/* Yet Another Unix Clone */
39.   /* #define HISX		/* Bull Unix for XPS Machines */
40.   /* #define BOS		/* Bull Open Software - Unix for DPX/2 Machines */
41.   /* #define UNIXPC	/* use in addition to SYSV for AT&T 7300/3B1 */
42.   /* #define AIX_31	/* In AIX 3.1 (IBM RS/6000) use BSD ioctl's to gain
43.   			 * job control (note that AIX is SYSV otherwise)
44.   			 * Also define this for AIX 3.2 */
45.   /* #define TEXTCOLOR	/* Use System V r3.2 terminfo color support */
46.   			/* and/or ANSI color support on termcap systems */
47.   			/* and/or X11 color */
48.   /* #define POSIX_JOB_CONTROL	/* use System V / POSIX job control
49.   			 * (e.g., VSUSP) */
50.   /* #define POSIX_TYPES	/* use POSIX types for system calls and termios */
51.   			/* define for many recent OS releases, including
52.   			 * those with specific defines (since types are
53.   			 * changing toward the standard from earlier chaos).
54.   			 * for example, platforms using the GNU libraries
55.   			 */
56.   
57.   /* #define OPENWINBUG	/* avoid a problem using OpenWindows 3.0 for X11
58.   			   on SunOS 4.1.x, x>= 2.  Do not define for other
59.   			   X11 implementations. */
60.   /* #define PYRAMID_BUG	/* avoid a bug on the Pyramid */
61.   /* #define BSD_43_BUG	/* for real 4.3BSD cc's without schain botch fix */
62.   /* #define MICROPORT_BUG /* problems with large arrays in structs */
63.   /* #define MICROPORT_286_BUG /* Changes needed in termcap.c to get it to
64.   			   run with Microport Sys V/AT version 2.4.
65.   			   By Jay Maynard */
66.   /* #define AIXPS_2BUG	/* avoid a problem with little_to_big() optimization */
67.   
68.   /* #define RANDOM	/* if neither random/srandom nor lrand48/srand48
69.   			   is available from your system */
70.   
71.   /* see sys/unix/snd86.shr for more information on these */
72.   /* #define UNIX386MUSIC	/* Play real music through speaker on systems with
73.   			   music driver installed */
74.   /* #define VPIX_MUSIC	/* Play real music through speaker on systems with
75.   			   built-in VPIX support */
76.   
77.   
78.   /*
79.    * The next two defines are intended mainly for the Andrew File System,
80.    * which does not allow hard links.  If NO_FILE_LINKS is defined, lock files
81.    * will be created in LOCKDIR using open() instead of in the playground using
82.    * link().
83.    *		Ralf Brown, 7/26/89 (from v2.3 hack of 10/10/88)
84.    */
85.   
86.   /* #define NO_FILE_LINKS	/* if no hard links */
87.   /* #define LOCKDIR "/usr/games/lib/nethackdir"	/* where to put locks */
88.   
89.   
90.   /*
91.    * Define DEF_PAGER as your default pager, e.g. "/bin/cat" or "/usr/ucb/more"
92.    * If defined, it can be overridden by the environment variable PAGER.
93.    * Hack will use its internal pager if DEF_PAGER is not defined.
94.    * (This might be preferable for security reasons.)
95.    * #define DEF_PAGER	".../mydir/mypager"
96.    */
97.   
98.   
99.   
100.  /*
101.   * Define PORT_HELP to be the name of the port-specfic help file.
102.   * This file is found in HACKDIR.
103.   * Normally, you shouldn't need to change this.
104.   * There is currently no port-specific help for Unix systems.
105.   */
106.  /* #define PORT_HELP "Unixhelp" */
107.  
108.  #ifdef TTY_GRAPHICS
109.  /*
110.   * To enable the `timed_delay' option for using a timer rather than extra
111.   * screen output when pausing for display effect.  Requires that `msleep'
112.   * function be available (with time argument specified in milliseconds).
113.   * Various output devices can produce wildly varying delays when the
114.   * "extra output" method is used, but not all systems provide access to
115.   * a fine-grained timer.
116.   */
117.  /* #define TIMED_DELAY		/* usleep() */
118.  #endif
119.  
120.  /*
121.   * If you define MAIL, then the player will be notified of new mail
122.   * when it arrives.  If you also define DEF_MAILREADER then this will
123.   * be the default mail reader, and can be overridden by the environment
124.   * variable MAILREADER; otherwise an internal pager will be used.
125.   * A stat system call is done on the mailbox every MAILCKFREQ moves.
126.   */
127.  
128.  #define MAIL			/* Deliver mail during the game */
129.  
130.  /* The Andrew Message System does mail a little differently from normal
131.   * UNIX.  Mail is deposited in the user's own directory in ~/Mailbox
132.   * (another directory).  MAILBOX is the element that will be added on to
133.   * the user's home directory path to generate the Mailbox path - just in
134.   * case other Andrew sites do it differently from CMU.
135.   *
136.   *		dan lovinger
137.   *		dl2n+@andrew.cmu.edu (dec 19 1989)
138.   */
139.  
140.  /* #define AMS			/* use Andrew message system for mail */
141.  
142.  /* NO_MAILREADER is for kerberos authentcating filesystems where it is
143.   * essentially impossible to securely exec child processes, like mail
144.   * readers, when the game is running under a special token.
145.   *
146.   *             dan
147.   */
148.  
149.  /* #define NO_MAILREADER	/* have mail daemon just tell player of mail */
150.  
151.  #ifdef	MAIL
152.  # if defined(BSD) || defined(ULTRIX)
153.  #  ifdef AMS
154.  #define AMS_MAILBOX	"/Mailbox"
155.  #  else
156.  #define DEF_MAILREADER	"/usr/ucb/Mail"
157.  #  endif
158.  #else
159.  # if defined(SYSV) || defined(DGUX) || defined(HPUX)
160.  #  ifdef M_XENIX
161.  #define DEF_MAILREADER	"/usr/bin/mail"
162.  #  else
163.  #   ifdef __sgi
164.  #define DEF_MAILREADER	"/usr/sbin/Mail"
165.  #   else
166.  #define DEF_MAILREADER	"/usr/bin/mailx"
167.  #   endif
168.  #  endif
169.  # else
170.  #define DEF_MAILREADER	"/bin/mail"
171.  # endif
172.  #endif
173.  
174.  #define MAILCKFREQ	50
175.  #endif	/* MAIL */
176.  
177.  
178.  
179.  #ifdef COMPRESS
180.  /* Some implementations of compress need a 'quiet' option.
181.   * If you've got one of these versions, put -q here.
182.   * You can also include any other strange options your compress needs.
183.   * If you have a normal compress, just leave it commented out.
184.   */
185.  /* #define COMPRESS_OPTIONS	"-q"	/* */
186.  #endif
187.  
188.  #define FCMASK	0660	/* file creation mask */
189.  
190.  
191.  /*
192.   * The remainder of the file should not need to be changed.
193.   */
194.  
195.  #ifdef _AUX_SOURCE
196.  # ifdef AUX /* gcc ? */
197.  #  define _SYSV_SOURCE
198.  #  define _BSD_SOURCE
199.  #else
200.  #  define AUX
201.  # endif
202.  #endif /* _AUX_SOURCE */
203.  
204.  #if defined(LINUX) || defined(bsdi)
205.  # ifndef POSIX_TYPES
206.  #  define POSIX_TYPES
207.  # endif
208.  # ifndef POSIX_JOB_CONTROL
209.  #  define POSIX_JOB_CONTROL
210.  # endif
211.  #endif
212.  
213.  /*
214.   * BSD/ULTRIX systems are normally the only ones that can suspend processes.
215.   * Suspending NetHack processes cleanly should be easy to add to other systems
216.   * that have SIGTSTP in the Berkeley sense.  Currently the only such systems
217.   * known to work are HPUX and AIX 3.1; other systems will probably require
218.   * tweaks to unixtty.c and ioctl.c.
219.   *
220.   * POSIX defines a slightly different type of job control, which should be
221.   * equivalent for NetHack's purposes.  POSIX_JOB_CONTROL should work on
222.   * various recent SYSV versions (with possibly tweaks to unixtty.c again).
223.   */
224.  #ifndef POSIX_JOB_CONTROL
225.  # if defined(BSD) || defined(ULTRIX) || defined(HPUX) || defined(AIX_31)
226.  #  define BSD_JOB_CONTROL
227.  # else
228.  #  if defined(SVR4)
229.  #   define POSIX_JOB_CONTROL
230.  #  endif
231.  # endif
232.  #endif
233.  #if defined(BSD_JOB_CONTROL) || defined(POSIX_JOB_CONTROL) || defined(AUX)
234.  #define SUSPEND		/* let ^Z suspend the game */
235.  #endif
236.  
237.  
238.  #if defined(BSD) || defined(ULTRIX)
239.  #include <sys/time.h>
240.  #else
241.  #include <time.h>
242.  #endif
243.  
244.  #define HLOCK	"perm"	/* an empty file used for locking purposes */
245.  
246.  #ifndef REDO
247.  #define Getchar nhgetch
248.  #endif
249.  #define tgetch getchar
250.  
251.  #define SHELL		/* do not delete the '!' command */
252.  
253.  #include "system.h"
254.  
255.  #if defined(POSIX_TYPES) || defined(__GNUC__)
256.  #include <stdlib.h>
257.  #include <unistd.h>
258.  #endif
259.  
260.  #if defined(POSIX_TYPES) || defined(__GNUC__) || defined(BSD) || defined(ULTRIX)
261.  #include <sys/wait.h>
262.  #endif
263.  
264.  #if defined(BSD) || defined(ULTRIX)
265.  # if !defined(DGUX) && !defined(SUNOS4)
266.  #define memcpy(d, s, n)		bcopy(s, d, n)
267.  #define memcmp(s1, s2, n)	bcmp(s2, s1, n)
268.  # endif
269.  # ifdef SUNOS4
270.  #include <memory.h>
271.  # endif
272.  #else	/* therefore SYSV */
273.  # ifndef index	/* some systems seem to do this for you */
274.  #define index	strchr
275.  # endif
276.  # ifndef rindex
277.  #define rindex	strrchr
278.  # endif
279.  #endif
280.  
281.  /* Use the high quality random number routines. */
282.  #if defined(BSD) || defined(ULTRIX) || defined(RANDOM)
283.  #define Rand()	random()
284.  #else
285.  #define Rand()	lrand48()
286.  #endif
287.  
288.  #ifdef TIMED_DELAY
289.  # ifdef SUNOS4
290.  # define msleep(k) usleep((k)*1000)
291.  # endif
292.  # ifdef ULTRIX
293.  # define msleep(k) napms(k)
294.  # endif
295.  #endif
296.  
297.  #ifdef hc	/* older versions of the MetaWare High-C compiler define this */
298.  # ifdef __HC__
299.  #  undef __HC__
300.  # endif
301.  # define __HC__ hc
302.  # undef hc
303.  #endif
304.  
305.  #endif /* UNIXCONF_H */
306.  #endif /* UNIX */