1 /* NetHack 3.7	config.h	$NHDT-Date: 1610141601 2021/01/08 21:33:21 $  $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.148 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /*-Copyright (c) Robert Patrick Rankin, 2016. */
4 /* NetHack may be freely redistributed.  See license for details. */
5 
6 #ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
7 #define CONFIG_H
8 
9 /*
10  * Section 1:   Operating and window systems selection.
11  *              Select the version of the OS you are using.
12  *              For "UNIX" select BSD, ULTRIX, SYSV, or HPUX in unixconf.h.
13  *              A "VMS" option is not needed since the VMS C-compilers
14  *              provide it (no need to change sec#1, vmsconf.h handles it).
15  *              MacOSX uses the UNIX configuration, not the old MAC one.
16  */
17 
18 #define UNIX /* delete if no fork(), exec() available */
19 
20 /* #define MSDOS */ /* in case it's not auto-detected */
21 
22 /* #define OS2 */ /* define for OS/2 */
23 
24 /* #define TOS */ /* define for Atari ST/TT */
25 
26 /* #define STUPID */ /* avoid some complicated expressions if
27                         your C compiler chokes on them */
28 /* #define MINIMAL_TERM */
29 /* if a terminal handles highlighting or tabs poorly,
30    try this define, used in pager.c and termcap.c */
31 /* #define ULTRIX_CC20 */
32 /* define only if using cc v2.0 on a DECstation */
33 /* #define ULTRIX_PROTO */
34 /* define for Ultrix 4.0 (or higher) on a DECstation;
35  * if you get compiler errors, don't define this. */
36 /* Hint: if you're not developing code, don't define
37    ULTRIX_PROTO. */
38 
39 #include "config1.h" /* should auto-detect MSDOS, MAC, AMIGA, and WIN32 */
40 
41 /*
42  * Consolidated version, patchlevel, development status.
43  */
44 #ifdef SHORT_FILENAMES
45 #include "patchlev.h"
46 #else
47 #include "patchlevel.h"
48 #endif
49 
50 
51 /* Windowing systems...
52  * Define all of those you want supported in your binary.
53  * Some combinations make no sense.  See the installation document.
54  */
55 #if !defined(NOTTYGRAPHICS)
56 #define TTY_GRAPHICS /* good old tty based graphics */
57 #endif
58 /* #define CURSES_GRAPHICS *//* Curses interface - Karl Garrison*/
59 /* #define X11_GRAPHICS */   /* X11 interface */
60 /* #define QT_GRAPHICS */    /* Qt interface */
61 /* #define MSWIN_GRAPHICS */ /* Windows NT, CE, Graphics */
62 
63 /*
64  * Define the default window system.  This should be one that is compiled
65  * into your system (see defines above).  Known window systems are:
66  *
67  *      tty, X11, mac, amii, BeOS, Qt, Gem, Gnome, shim
68  */
69 
70 /* MAC also means MAC windows */
71 #ifdef MAC
72 #ifndef AUX
73 #define DEFAULT_WINDOW_SYS "mac"
74 #endif
75 #endif
76 
77 /* Amiga supports AMII_GRAPHICS and/or TTY_GRAPHICS */
78 #ifdef AMIGA
79 #define AMII_GRAPHICS             /* (optional) */
80 #define DEFAULT_WINDOW_SYS "amii" /* "amii", "amitile" or "tty" */
81 #endif
82 
83 /* Atari supports GEM_GRAPHICS and/or TTY_GRAPHICS */
84 #ifdef TOS
85 #define GEM_GRAPHICS             /* Atari GEM interface (optional) */
86 #define DEFAULT_WINDOW_SYS "Gem" /* "Gem" or "tty" */
87 #endif
88 
89 #ifdef __BEOS__
90 #define BEOS_GRAPHICS             /* (optional) */
91 #define DEFAULT_WINDOW_SYS "BeOS" /* "tty" */
92 #ifndef HACKDIR                   /* override the default hackdir below */
93 #define HACKDIR "/boot/apps/NetHack"
94 #endif
95 #endif
96 
97 #ifdef QT_GRAPHICS
98 #ifndef DEFAULT_WC_TILED_MAP
99 #define DEFAULT_WC_TILED_MAP /* Default to tiles if users doesn't say \
100                                 wc_ascii_map */
101 #endif
102 #ifndef NOUSER_SOUNDS
103 #define USER_SOUNDS /* Use sounds */
104 #endif
105 #ifndef USE_XPM
106 #define USE_XPM           /* Use XPM format for images (required) */
107 #endif
108 #ifndef GRAPHIC_TOMBSTONE
109 #define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */
110 #endif
111 #ifndef DEFAULT_WINDOW_SYS
112 #define DEFAULT_WINDOW_SYS "Qt"
113 #endif
114 #endif
115 
116 #ifdef GNOME_GRAPHICS
117 #ifndef USE_XPM
118 #define USE_XPM           /* Use XPM format for images (required) */
119 #endif
120 #ifndef GRAPHIC_TOMBSTONE
121 #define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.ppm) */
122 #endif
123 #ifndef DEFAULT_WINDOW_SYS
124 #define DEFAULT_WINDOW_SYS "Gnome"
125 #endif
126 #endif
127 
128 #ifdef MSWIN_GRAPHICS
129 #ifndef DEFAULT_WINDOW_SYS
130 #define DEFAULT_WINDOW_SYS "mswin"
131 #endif
132 #define HACKDIR "\\xnethack"
133 #endif
134 
135 #ifdef TTY_GRAPHICS
136 #ifndef DEFAULT_WINDOW_SYS
137 #define DEFAULT_WINDOW_SYS "tty"
138 #endif
139 #endif
140 
141 #ifdef CURSES_GRAPHICS
142 #ifndef DEFAULT_WINDOW_SYS
143 #define DEFAULT_WINDOW_SYS "curses"
144 #endif
145 #endif
146 
147 #ifdef SHIM_GRAPHICS
148 #ifndef DEFAULT_WINDOW_SYS
149 #define DEFAULT_WINDOW_SYS "shim"
150 #endif
151 #endif
152 
153 #ifdef X11_GRAPHICS
154 /*
155  * There are two ways that X11 tiles may be defined.  (1) using a custom
156  * format loaded by NetHack code, or (2) using the XPM format loaded by
157  * the free XPM library.  The second option allows you to then use other
158  * programs to generate tiles files.  For example, the PBMPlus tools
159  * would allow:
160  *  xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
161  */
162 /* # define USE_XPM */ /* Disable if you do not have the XPM library */
163 #ifdef USE_XPM
164 #ifndef GRAPHIC_TOMBSTONE
165 #define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */
166 #endif
167 #endif
168 #ifndef DEFAULT_WC_TILED_MAP
169 #define DEFAULT_WC_TILED_MAP /* Default to tiles */
170 #endif
171 #endif
172 
173 /*
174  * Section 2:   Some global parameters and filenames.
175  *
176  *              LOGFILE, XLOGFILE, LIVELOGFILE, NEWS and PANICLOG refer to
177  *              files in the playground directory.  Commenting out LOGFILE,
178  *              XLOGFILE, LIVELOGFILE, NEWS or PANICLOG removes that feature
179  *              from the game.
180  *
181  *              Building with debugging features enabled is now unconditional;
182  *              the old WIZARD setting for that has been eliminated.
183  *              If SYSCF is enabled, WIZARD_NAME will be overridden at
184  *              runtime by the SYSCF WIZARDS value.
185  *
186  *              SYSCF:  (not supported by all ports)
187  *            If SYSCF is defined, the following configuration info is
188  *            available in a global config space, with the compiled-in
189  *            entries as defaults:
190  *              WIZARDS      (a space-separated list of usernames of users who
191  *                           can run the game in debug mode, aka wizard mode;
192  *                           a value of * allows anyone to debug;
193  *                           this does NOT default to compiled-in value)
194  *              EXPLORERS    (who can use explore mode, aka discover mode)
195  *              SHELLERS     (who can use ! to execute a shell subprocess)
196  *              MAXPLAYERS   (see MAX_NR_OF_PLAYERS below and nethack.sh)
197  *              SUPPORT      (how to get local support) [no default]
198  *              RECOVER      (how to recover a game at your site) [no default]
199  *            For the record file (see topten.c):
200  *              PERSMAX      (max entries for one person)
201  *              ENTRYMAX     (max entries in the record file)
202  *              POINTSMIN    (min points to get an entry)
203  *              PERS_IS_UID  (0 or 1 - person is name or (numeric) userid)
204  *            Can force incubi/succubi behavior to be toned down to nymph-like:
205  *              SEDUCE       (0 or 1 - runtime disable/enable SEDUCE option)
206  *            Live-logging
207  *              LIVELOG      (0-0xFFFF - bitmask for level/type of live-logging
208  *                            See comments in 'sysconf' for details)
209  *            The following options pertain to crash reporting:
210  *              GREPPATH     (the path to the system grep(1) utility)
211  *              GDBPATH      (the path to the system gdb(1) program)
212  *            Regular nethack options can also be specified in order to
213  *            provide system-wide default values local to your system:
214  *              OPTIONS      (same as in users' .xnethackrc or defaults.nh)
215  *
216  *              In the future there may be other ways to supply SYSCF
217  *              information (Windows registry, Apple resource forks, etc)
218  *              but at present the only supported method is via a text file.
219  *              If the program is built with SYSCF enabled, the file *must*
220  *              exist and be readable, otherwise the game will complain and
221  *              refuse to start.
222  *              SYSCF_FILE:  file containing the SYSCF options shown above;
223  *              default is 'sysconf' in nethack's playground.
224  */
225 
226 #ifndef WIZARD_NAME /* allow for compile-time or Makefile changes */
227 #define WIZARD_NAME "wizard" /* value is ignored if SYSCF is enabled */
228 #endif
229 
230 #ifndef SYSCF
231 #define SYSCF                /* use a global configuration */
232 #define SYSCF_FILE "sysconf" /* global configuration is in a file */
233 #endif
234 
235 #ifndef GDBPATH
236 #define GDBPATH "/usr/bin/gdb"
237 #endif
238 #ifndef GREPPATH
239 #define GREPPATH "/bin/grep"
240 #endif
241 
242 /* note: "larger" is in comparison with 'record', the high-scores file
243    (whose name can be overridden via #define in global.h if desired) */
244 #define LOGFILE  "logfile"  /* larger file for debugging purposes */
245 #define XLOGFILE "xlogfile" /* even larger logfile */
246 #define NEWS     "news"     /* the file containing the latest hack news */
247 #define PANICLOG "paniclog" /* log of panic and impossible events */
248 
249 /* alternative paniclog format, better suited for public servers with
250    many players, as it saves the player name and the game start time */
251 /* #define PANICLOG_FMT2 */
252 
253 /*
254  *      PERSMAX, POINTSMIN, ENTRYMAX, PERS_IS_UID:
255  *      These control the contents of 'record', the high-scores file.
256  *      They used to be located in topten.c rather than config.h, and
257  *      their values can be overridden at runtime (to increase ENTRYMAX, the
258  *      maximum number of scores to keep, for example) if SYSCF is enabled.
259  */
260 #ifndef PERSMAX
261 #define PERSMAX 3 /* entries per name/uid per char. allowed */
262 #endif
263 #ifndef POINTSMIN
264 #define POINTSMIN 1 /* must be > 0 */
265 #endif
266 #ifndef ENTRYMAX
267 #define ENTRYMAX 100 /* must be >= 10 */
268 #endif
269 #ifndef PERS_IS_UID
270 #if !defined(MICRO) && !defined(MAC) && !defined(WIN32)
271 #define PERS_IS_UID 1 /* delete for PERSMAX per name; now per uid */
272 #else
273 #define PERS_IS_UID 0
274 #endif
275 #endif
276 
277 /*
278  *      If COMPRESS is defined, it should contain the full path name of your
279  *      'compress' program.
280  *
281  *      If you define COMPRESS, you must also define COMPRESS_EXTENSION
282  *      as the extension your compressor appends to filenames after
283  *      compression. Currently, only UNIX fully implements
284  *      COMPRESS; other ports should be able to uncompress save files a
285  *      la unixmain.c if so inclined.
286  *
287  *      Defining ZLIB_COMP builds in support for zlib compression. If you
288  *      define ZLIB_COMP, you must link with a zlib library. Not all ports
289  *      support ZLIB_COMP.
290  *
291  *      COMPRESS and ZLIB_COMP are mutually exclusive.
292  *
293  */
294 
295 #if defined(UNIX) && !defined(ZLIB_COMP) && !defined(COMPRESS)
296 /* path and file name extension for compression program */
297 /* #define COMPRESS "/usr/bin/compress" */ /* Lempel-Ziv compression */
298 /* #define COMPRESS_EXTENSION ".Z"      */ /* compress's extension */
299 /* An example of one alternative you might want to use: */
300 #define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
301 #define COMPRESS_EXTENSION ".gz"       /* normal gzip extension */
302 #endif
303 
304 #ifndef COMPRESS
305 /* # define ZLIB_COMP */            /* ZLIB for compression */
306 #endif
307 
308 /*
309  *      Internal Compression Options
310  *
311  *      Internal compression options RLECOMP and ZEROCOMP alter the data
312  *      that gets written to the save file by NetHack, in contrast
313  *      to COMPRESS or ZLIB_COMP which compress the entire file after
314  *      the NetHack data is written out.
315  *
316  *      Defining RLECOMP builds in support for internal run-length
317  *      compression of level structures. If RLECOMP support is included
318  *      it can be toggled on/off at runtime via the config file option
319  *      rlecomp.
320  *
321  *      Defining ZEROCOMP builds in support for internal zero-comp
322  *      compression of data. If ZEROCOMP support is included it can still
323  *      be toggled on/off at runtime via the config file option zerocomp.
324  *
325  *      RLECOMP and ZEROCOMP support can be included even if
326  *      COMPRESS or ZLIB_COMP support is included. One reason for doing
327  *      so would be to provide savefile read compatibility with a savefile
328  *      where those options were in effect. With RLECOMP and/or ZEROCOMP
329  *      defined, NetHack can read an rlecomp or zerocomp savefile in, yet
330  *      re-save without them.
331  *
332  *      Using any compression option will create smaller bones/level/save
333  *      files at the cost of additional code and time.
334  */
335 
336 /* # define INTERNAL_COMP */ /* defines both ZEROCOMP and RLECOMP */
337 /* # define ZEROCOMP      */ /* Support ZEROCOMP compression */
338 /* # define RLECOMP       */ /* Support RLECOMP compression  */
339 
340 /*
341  *      Data librarian.  Defining DLB places most of the support files into
342  *      a tar-like file, thus making a neater installation.  See *conf.h
343  *      for detailed configuration.
344  */
345 /* #define DLB */ /* not supported on all platforms */
346 
347 /*
348  *      Defining REPRODUCIBLE_BUILD causes 'util/makedefs -v' to construct
349  *      date+time in include/date.h (to be shown by nethack's 'v' command)
350  *      from SOURCE_DATE_EPOCH in the build environment rather than use
351  *      current date+time when makedefs is run.
352  *
353  *      [The version string will show "last revision <date><time>" instead
354  *      of "last build <date><time>" if SOURCE_DATE_EPOCH has a value
355  *      which seems valid at the time date.h is generated.  The person
356  *      building the program is responsible for setting it correctly,
357  *      and the value should be in UTC rather than local time.  NetHack
358  *      normally uses local time and doesn't display timezone so toggling
359  *      REPRODUCIBLE_BUILD on or off might yield a date+time that appears
360  *      to be incorrect relative to what the other setting produced.]
361  *
362  *      Intent is to be able to rebuild the program with the same value
363  *      and obtain an identical copy as was produced by a previous build.
364  *      Not necessary for normal game play....
365  */
366 /* #define REPRODUCIBLE_BUILD */ /* use getenv("SOURCE_DATE_EPOCH") instead
367                                     of current time when creating date.h */
368 
369 /*
370  *      Defining INSURANCE slows down level changes, but allows games that
371  *      died due to program or system crashes to be resumed from the point
372  *      of the last level change, after running a utility program.
373  */
374 #define INSURANCE /* allow crashed game recovery */
375 
376 #ifndef MAC
377 #define CHDIR /* delete if no chdir() available */
378 #endif
379 
380 #ifdef CHDIR
381 /*
382  * If you define HACKDIR, then this will be the default playground;
383  * otherwise it will be the current directory.
384  */
385 #ifndef HACKDIR
386 #define HACKDIR "/usr/local/share/xnethack"
387 #endif
388 
389 /*
390  * Some system administrators are stupid enough to make Hack suid root
391  * or suid daemon, where daemon has other powers besides that of reading or
392  * writing Hack files.  In such cases one should be careful with chdir's
393  * since the user might create files in a directory of his choice.
394  * Of course SECURE is meaningful only if HACKDIR is defined.
395  */
396 /* #define SECURE */ /* do setuid(getuid()) after chdir() */
397 
398 /*
399  * If it is desirable to limit the number of people that can play Hack
400  * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS (or use
401  * MAXPLAYERS under SYSCF).
402  * #define MAX_NR_OF_PLAYERS 6
403  */
404 #endif /* CHDIR */
405 
406 /*
407  * Section 3:   Definitions that may vary with system type.
408  *              For example, both schar and uchar should be short ints on
409  *              the AT&T 3B2/3B5/etc. family.
410  */
411 
412 /*
413  * Uncomment the following line if your compiler doesn't understand the
414  * 'void' type (and thus would give all sorts of compile errors without
415  * this definition).
416  */
417 /* #define NOVOID */ /* define if no "void" data type. */
418 
419 /*
420  * Uncomment the following line if your compiler falsely claims to be
421  * a standard C compiler (i.e., defines __STDC__ without cause).
422  * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
423  */
424 /* #define NOTSTDC */ /* define for lying compilers */
425 
426 #include "tradstdc.h"
427 
428 /*
429  * type schar:
430  * small signed integers (8 bits suffice) (eg. TOS)
431  *      typedef char schar;
432  * will do when you have signed characters; otherwise use
433  *      typedef short int schar;
434  */
435 #ifdef AZTEC
436 #define schar char
437 #else
438 typedef signed char schar;
439 #endif
440 
441 /*
442  * type uchar:
443  * small unsigned integers (8 bits suffice - but 7 bits do not)
444  *      typedef unsigned char uchar;
445  * will be satisfactory if you have an "unsigned char" type; otherwise use
446  *      typedef unsigned short int uchar;
447  */
448 #ifndef _AIX32 /* identical typedef in system file causes trouble */
449 typedef unsigned char uchar;
450 #endif
451 
452 /*
453  * Various structures have the option of using bitfields to save space.
454  * If your C compiler handles bitfields well (e.g., it can initialize structs
455  * containing bitfields), you can define BITFIELDS.  Otherwise, the game will
456  * allocate a separate character for each bitfield.  (The bitfields used never
457  * have more than 7 bits, and most are only 1 bit.)
458  */
459 #define BITFIELDS /* Good bitfield handling */
460 
461 /* #define STRNCMPI */ /* compiler/library has the strncmpi function */
462 
463 /*
464  * Vision choices.
465  *
466  * Things will be faster if you can use MACRO_CPATH.  Some cpps, however,
467  * cannot deal with the size of the functions that have been macroized.
468  */
469 
470 #ifndef NO_MACRO_CPATH
471 #define MACRO_CPATH /* use clear_path macros instead of functions */
472 #endif
473 
474 #if !defined(MAC)
475 #if !defined(NOCLIPPING)
476 #define CLIPPING /* allow smaller screens -- ERS */
477 #endif
478 #endif
479 
480 /* The "repeat" key used in cmd.c as NHKF_DOAGAIN; if commented out or the
481  * value is changed from C('A') to 0, it won't be bound to any keystroke
482  * unless you use the run-time configuration file's BIND directive for it.
483  * [Note: C() macro isn't defined yet but it will be before DOAGAIN is used.]
484  */
485 #define DOAGAIN C('A') /* repeat previous command; default is ^A, '\001' */
486 
487 /* CONFIG_ERROR_SECURE: If user makes NETHACKOPTIONS point to a file ...
488  *  TRUE: Show the first error, nothing else.
489  *  FALSE: Show all errors as normal, with line numbers and context.
490  */
491 #ifndef CONFIG_ERROR_SECURE
492 # define CONFIG_ERROR_SECURE TRUE
493 #endif
494 
495 /*
496  * Section 4:  EXPERIMENTAL STUFF
497  *
498  * Conditional compilation of new or experimental options are controlled here.
499  * Enable any of these at your own risk -- there are almost certainly
500  * bugs left here.
501  */
502 
503 /* SELECTSAVED: Enable the 'selectsaved' run-time option, allowing it
504  * to be set in user's config file or NETHACKOPTIONS.  When set, if
505  * player is about to be given the "who are you?" prompt, check for
506  * save files and if any are found, put up a menu of them for choosing
507  * one to restore (plus extra menu entries "new game" and "quit").
508  *
509  * Not useful if players are forced to use a specific character name
510  * such as their user name.  However in some cases, players can set
511  * their character name to one which is classified as generic in the
512  * sysconf file (such as "player" or "games")
513  *  nethack -u player
514  * to force the "who are you?" prompt in which case 'selectsaved' will
515  * be honored.
516  *
517  * Comment out if the wildcard file name lookup in files.c doesn't
518  * compile or doesn't work as intended.
519  */
520 #define SELECTSAVED /* support for restoring via menu */
521 
522 /* TTY_TILES_ESCCODES: Enable output of special console escape codes
523  * which act as hints for external programs such as EbonHack, or hterm.
524  *
525  * TTY_SOUND_ESCCODES: Enable output of special console escape codes
526  * which act as hints for theoretical external programs to play sound effect.
527  *
528  * Only for TTY_GRAPHICS.
529  *
530  * All of the escape codes are in the format ESC [ N z, where N can be
531  * one or more positive integer values, separated by semicolons.
532  * For example ESC [ 1 ; 0 ; 120 z
533  *
534  * Possible TTY_TILES_ESCCODES codes are:
535  *  ESC [ 1 ; 0 ; n ; m z   Start a glyph (aka a tile) number n, with flags m
536  *  ESC [ 1 ; 1 z           End a glyph.
537  *  ESC [ 1 ; 2 ; n z       Select a window n to output to.
538  *  ESC [ 1 ; 3 z           End of data. NetHack has finished sending data,
539  *                          and is waiting for input.
540  * Possible TTY_SOUND_ESCCODES codes are:
541  *  ESC [ 1 ; 4 ; n ; m z   Play specified sound n, volume m
542  *
543  * Whenever NetHack outputs anything, it will first output the "select window"
544  * code. Whenever NetHack outputs a tile, it will first output the "start
545  * glyph" code, then the escape codes for color and the glyph character
546  * itself, and then the "end glyph" code.
547  *
548  * To compile NetHack with this, add tile.c to WINSRC and tile.o to WINOBJ
549  * in the hints file or Makefile.
550  * Set boolean option vt_xdata in your config file to turn either of these on.
551  * Note that gnome-terminal at least doesn't work with this. */
552 /* #define TTY_TILES_ESCCODES */
553 /* #define TTY_SOUND_ESCCODES */
554 
555 /* NetHack will execute an external program whenever a new message-window
556  * message is shown.  The program to execute is given in environment variable
557  * NETHACK_MSGHANDLER.  It will get the message as the only parameter.
558  * Only available with POSIX_TYPES or GNU C */
559 /* #define MSGHANDLER */
560 
561 /* enable status highlighting via STATUS_HILITE directives in run-time
562    config file and the 'statushilites' option */
563 #define STATUS_HILITES         /* support hilites of status fields */
564 
565 /* #define WINCHAIN */              /* stacked window systems */
566 
567 /* #define DEBUG_MIGRATING_MONS */  /* add a wizard-mode command to help debug
568                                        migrating monsters */
569 
570 /* SCORE_ON_BOTL is neither experimental nor inadequately tested,
571    but doesn't seem to fit in any other section... */
572 /* #define SCORE_ON_BOTL */         /* enable the 'showscore' option to
573                                        show estimated score on status line */
574 
575 /* FREE_ALL_MEMORY is neither experimental nor inadequately tested,
576    but it isn't necessary for successful operation of the program */
577 #define FREE_ALL_MEMORY             /* free all memory at exit */
578 
579 /* Extra enhancements borrowed from nao343 and elsewhere for dgamelaunch-based
580  * server play. If you're not running a server, you probably don't need any of
581  * these features.
582  * DGAMELAUNCH doesn't mean anything in nethack itself, it's just a handy
583  * compile-time toggle switch for all server-specfic features. */
584 /* #define DGAMELAUNCH */
585 
586 #ifdef DGAMELAUNCH
587 
588 /* Livelogging: writing important events into a file that another program can
589  * read from. By default, the name of this file is LIVELOGFILE in the
590  * playground. */
591 #define LIVELOG_ENABLE
592 #ifdef LIVELOG_ENABLE
593 #define LIVELOGFILE "livelog" /* in-game events recorded live */
594 #ifdef LIVELOGFILE
595 /* LL_flags defined in global.h. Value below is ignored if SYSCF is enabled */
596 /* #define LIVELOG_DETAIL (LL_WISH | LL_ACHIEVE | LL_UMONST) */
597 #define LIVELOG_DETAIL 0x1FFF
598 #endif
599 #endif /* LIVELOG_ENABLE */
600 
601 /* Extrainfo contains some brief bits of information that are useful to show in
602  * a menu listing games that are currently in play on a server */
603 #define EXTRAINFO_FN    "/dgldir/extrainfo-xnh/%n.extrainfo"
604 
605 /* How many moves between checking for more incoming mail. */
606 #define MAILCKFREQ 5  /* SIMPLE_MAIL is in unixconf.h */
607 
608 /* Write out player's current location to player.whereis */
609 #define WHEREIS_FILE "whereis/%n.whereis"
610 
611 #endif /* DGAMELAUNCH */
612 
613 /* End-of-game dump logs showing the map, messages, stats, identified
614  * possessions, vanquished monsters, etc. */
615 #ifndef DUMPLOG
616 #define DUMPLOG
617 #endif
618 
619 /* EXTRA_SANITY_CHECKS adds extra impossible calls,
620  * probably not useful for normal play */
621 /* #define EXTRA_SANITY_CHECKS */
622 
623 /* BREADCRUMBS employs the use of predefined compiler macros
624  * __FUNCTION__ and __LINE__ to store some caller breadcrumbs
625  * for use during heavy debugging sessions. Only define if your
626  * compiler supports those predefined macros and you are debugging */
627 /* #define BREADCRUMBS */
628 
629 /* EDIT_GETLIN makes the string input in TTY, curses, Qt4, and X11
630    for some prompts be pre-loaded with previously input text (from
631    a previous instance of the same prompt) as the default response.
632    In some cases, the previous instance can only be within the same
633    session; in others, such as #annotate, the previous input can be
634    from any session because the response is saved and restored with
635    the map.  The 'edit' capability is just <delete> or <backspace>
636    to strip off characters at the end, or <escape> to discard the
637    whole thing, then type a new end for the text. */
638 /* #define EDIT_GETLIN */
639 
640 #if defined(DUMPLOG) || defined(DUMPHTML)
641 
642 #ifndef DUMPLOG_MSG_COUNT
643 #define DUMPLOG_MSG_COUNT   50
644 #endif
645 
646 #ifdef DUMPLOG
647 
648 #ifndef DUMPLOG_FILE
649 #define DUMPLOG_FILE        "/tmp/xnethack.%v.%u.%n.%D.log"
650 /* DUMPLOG_FILE allows following placeholders:
651    %% literal '%'
652    %v version (eg. "3.6.3-0")
653    %u game UID
654    %t game start time, UNIX timestamp format
655    %T current time, UNIX timestamp format
656    %d game start time, YYYYMMDDhhmmss format
657    %D current time, YYYYMMDDhhmmss format
658    %n player name
659    %N first character of player name
660    DUMPLOG_FILE is not used if SYSCF is defined
661 */
662 #endif
663 
664 #endif /* DUMPLOG */
665 
666 #ifdef DUMPHTML
667 
668 #ifndef DUMPHTML_FILE
669 #define DUMPHTML_FILE        "/tmp/xnethack.%n.%d.html"
670 /* Placeholders as above
671  * DUMPHTML_FILE is not used if SYSCF is defiined
672  */
673 
674 #endif
675 
676 #endif /* DUMPHTML */
677 
678 #endif /* DUMPLOG || DUMPHTML */
679 
680 #define USE_ISAAC64 /* Use cross-plattform, bundled RNG */
681 
682 /* End of Section 4 */
683 
684 #ifdef TTY_TILES_ESCCODES
685 # ifndef USE_TILES
686 #  define USE_TILES
687 # endif
688 #endif
689 
690 #include "global.h" /* Define everything else according to choices above */
691 
692 #endif /* CONFIG_H */
693