/
MudOS_0.9.19/bin/
MudOS_0.9.19/doc/concepts/
MudOS_0.9.19/doc/driver/
MudOS_0.9.19/doc/efuns/bitstrings/
MudOS_0.9.19/doc/efuns/buffers/
MudOS_0.9.19/doc/efuns/communication/
MudOS_0.9.19/doc/efuns/core/
MudOS_0.9.19/doc/efuns/mappings/
MudOS_0.9.19/doc/efuns/math/
MudOS_0.9.19/doc/efuns/security/
MudOS_0.9.19/doc/lpc/constructs/
MudOS_0.9.19/doc/lpc/types/
MudOS_0.9.19/doc/platforms/
MudOS_0.9.19/etc/
MudOS_0.9.19/mudlib/
MudOS_0.9.19/mudlib/lil/
MudOS_0.9.19/mudlib/lil/clone/
MudOS_0.9.19/mudlib/lil/command/
MudOS_0.9.19/mudlib/lil/data/
MudOS_0.9.19/mudlib/lil/etc/
MudOS_0.9.19/mudlib/lil/include/
MudOS_0.9.19/mudlib/lil/inherit/
MudOS_0.9.19/mudlib/lil/inherit/master/
MudOS_0.9.19/mudlib/lil/log/
MudOS_0.9.19/mudlib/lil/single/
MudOS_0.9.19/mudlib/lil/u/
MudOS_0.9.19/src/testsuite/
MudOS_0.9.19/src/testsuite/clone/
MudOS_0.9.19/src/testsuite/command/
MudOS_0.9.19/src/testsuite/data/
MudOS_0.9.19/src/testsuite/etc/
MudOS_0.9.19/src/testsuite/include/
MudOS_0.9.19/src/testsuite/inherit/
MudOS_0.9.19/src/testsuite/inherit/master/
MudOS_0.9.19/src/testsuite/log/
MudOS_0.9.19/src/testsuite/single/
MudOS_0.9.19/src/testsuite/single/efuns/
MudOS_0.9.19/src/testsuite/u/
/*
 * options.h: defines for the compile-time configuration of MudOS
 */
 
/* NOTES:
 * Many of the configurable options are now set via the configuration file 
 *  that is specified as the first argument to the driver.  
 * See port.h for those #defines related to portability (compatibility) if
 *  you have problems compiling on your system.
 * Removing an efun from func_spec.c usually removes most, if not all,
 *  of the code associated with it.
 */
 
/* You must choose exactly one of these mallocs.
 *
 * SYSMALLOC: builtin system malloc.  No wrappers, no statistics.  Can
 *   be used in conjunction with BSD or SMALLOC (in which case you will get
 *   malloc statistics if DO_MSTATS is also defined).  SYSMALLOC incurs no
 *   additional cpu or memory overhead.
 * WRAPPEDMALLOC: wrapper for builtin system malloc.  Provides limited
 *   statistics, can be used in conjunction with BSDMALLOC/SMALLOC.  Limited
 *   additional cpu overhead and no additional memory overhead.
 * DEBUGMALLOC:  May be used in conjunction with BSDMALLOC/SMALLOC.  Provides
 *   statistics on precisely how much memory has been malloc'd (as well
 *   as the stats provided by WRAPPEDMALLOC).  Incurs a fair amount of
 *   overhead (both memory and cpu usage).
 *
 * [NOTE: BSDMALLOC and SMALLOC are also options however they must be
 *  selected from the Makefile rather than here since they are actual
 *  replacements for system malloc rather than wrappers for system malloc
 *  as are WRAPPEDMALLOC and DEBUGMALLOC]
 */
#define SYSMALLOC
#undef WRAPPEDMALLOC
#undef DEBUGMALLOC
 
/* DO_MSTATS: do not define this unless BSDMALLOC or SMALLOC is chosen in the
 * Makefile.  Defining this causes those replacement mallocs to keep
 * statistics that the malloc_status() efun will print out (including total
 * memory allocated/used).
 */
#undef DO_MSTATS
 
/* defining this (in addition to DEBUGMALLOC) enables the set_malloc_mask(int)
 * and debugmalloc(string,int) efuns.  These two efuns basically allow you
 * to cause certain malloc's and free's (with tags selected by a specified
 * mask) to print debug information (addr, tag, description, size) to
 * stdio (in the shell that invoked the driver) or to a file.  Not defining
 * this does reduce the overhead of DEBUGMALLOC from 16 bytes per malloc
 * down to 8.  This macro has no effect if DEBUGMALLOC isn't defined.
 */
#undef DEBUGMALLOC_EXTENSIONS
 
/* LOG_CATCHES: define this to cause errors that are catch()'d to be
 * sent to the debug log anyway.
 */
#undef LOG_CATCHES
 
/* SOCKET_EFUNS: define this to enable the socket efunctions.  This
 * causes HAS_SOCKETS to be defined for all LPC objects.
 */
#define SOCKET_EFUNS
 
/* CONFIG_FILE_DIR specifies a directory in which the driver will search for
 * config files by default.  If you don't wish to use this define, you may
 * always specify a full path to the config file when starting the driver.
 */
#define CONFIG_FILE_DIR "/usr/local/mud/mudos/etc"
 
/* OLD_COMMAND: if this is defined, then the command() efun may take a 2nd
 * argument specifying on which object to perform the command.
 */
#undef OLD_COMMAND
 
/* MATH: determines whether or not the math efuns (for floats) are included
 */
#define MATH
 
/* MATRIX: determines whether or not the 3d graphics efuns (for floats)
 * are included - see func_spec.c for a list.
 */
#undef MATRIX
 
/* LAZY_RESETS: if this is defined, an object will only have reset()
 * called in it when it is touched via call_other() or move_object()
 * (assuming enough time has passed since the last reset).  If LAZY_RESETS
 * is #undef'd, then reset() will be called as always (which guaranteed that
 * reset would always be called at least once).  The advantage of lazy
 * resets is that reset doesn't get called in an object that is touched
 * once and never again (which can save memory since some objects won't get
 * reloaded that otherwise would).
 */
#undef LAZY_RESETS
 
/* SAVE_EXTENSION: defines the file extension used by save_object()
 * and restore_object().  Some sysadmins run scripts that periodically
 * scan for and remove files ending in .o (but many mudlibs are already
 * set up to use .o thus we leave .o as the default).
 */
#define SAVE_EXTENSION ".o"
 
/* SANE_EXPLODE_STRING: define this if you want to prevent explode_string
 * from stripping off more than one leading delimeters.  #undef it for the
 * old behavior.
 */
#undef SANE_EXPLODE_STRING
 
/* EACH: define this if you want the each() operator for mappings.  Undefining
 * EACH save about 12 bytes per allocated mapping but will make the each()
 * efun unavailable.  Many people think each() is a bad efun to have but
 * its here because people use it and would gripe if I took it away.  The
 * alternative to each() is to use keys() and iterate over the returned
 * array.
 */
#undef EACH
 
/* STRICT_TYPE_CHECKING: define this if you wish to force formal parameter
 * to include types.  If this is undef'd, then grossnesses like:
 * func(obj) { string foo;  foo = allocate(3); } are allowed.
 */
#undef STRICT_TYPE_CHECKING
 
/* IGNORE_STRICT_PRAGMA: define this if you wish the #pragma strict_types to
 * be ignored.  This should normally be #undef'd but is useful in
 * certain situations.
 */
#undef IGNORE_STRICT_PRAGMA
 
/* NO_ANSI: define if you wish to disallow users from typing in commands that 
 * contain ANSI escape sequences.  Defining NO_ANSI causes all escapes 
 * (ASCII 27) to be replaced with a space ' '.
 */
#define NO_ANSI
 
/* OPC_PROF: define this if you wish to enable OPC profiling. Allows a dump 
 * of the # of times each efun is invoked (via the opcprof() efun)
 */
#undef OPCPROF
 
/* TRAP_CRASHES define this if you want MudOS to call crash() in master.c
 * and then shutdown when signals are received that would normally crash the
 * driver.  
 */
#define TRAP_CRASHES
 
/* DROP_CORE: define this if you want the driver to attempt to create
 * a core file when it crashes via the crash_MudOS() function.  This
 * define only has an affect if -DDEBUG isn't defined in the makefile
 * (except for the SIGINT and SIGTERM signals which are always trapped).
 * Note: keep this undefined for now since it seems to hang some machines
 * upon crashing (some DECstations apparently).  If you want to get a core
 * file, undef'ing TRAP_CRASHES should work.
 */
#undef DROP_CORE
 
/* Define this if you wish this_player() to be usable from within
 * call_out() callbacks.
 */
#define THIS_PLAYER_IN_CALL_OUT
 
/* AUTO_SETEUID: when an object is created it's euid is automatically set to
 * the equivalent of seteuid(getuid(this_object())).  undef AUTO_SETEUID
 * if you would rather have the euid of the created object be set to 0.
 */
#undef AUTO_SETEUID
 
/* AUTO_TRUST_BACKBONE: define this if you want objects with the backbone
 * uid to automatically be trusted and to have their euid set to the uid of
 * the object that forced the object's creation.  
 */
#define AUTO_TRUST_BACKBONE
 
/* PRIVS: define this if you want object privledges.  Your mudlib must
 * explicitly make use of this functionality to be useful.  Defining this
 * this will increase the size of the object structure by 4 bytes (8 bytes
 * on the DEC Alpha) and will add a new master apply during object creation
 * to "privs_file".  In general, priveleges can be used to increase the
 * granularity of security beyond the current root uid mechanism,
 * Note for those who'd rather do such things at the mudlib level, look at
 * the inherits() efun and the 'valid_object' apply to master.
 */
#undef PRIVS
 
/* HEARTBEAT_INTERVAL: define heartbeat interval in microseconds (us).
 * 1,000,000 us = 1 second.  The value of this macro specifies
 * the frequency with which the heart_beat method will be called in
 * those LPC objects which have called set_heart_beat(1);
 * Note: if SYSV is defined, alarm() is used instead of ualarm().  Since
 * alarm() requires its argument in units of a second, we map 1 - 1,000,000 us
 * to an actual interval of one (1) second and 1,000,001 - 2,000,000 maps to
 * an actual interval of two (2) seconds, etc.
 */
#define HEARTBEAT_INTERVAL 2000000
 
/* OLD_HEARTBEAT: define this if you want the old heartbeat semantics.
 * In the new semantics, set_heart_beat(ticks), specifies the number of
 * HEARTBEAT_INTERVAL ticks to be used, where ticks can be > 1 for
 * multiple tick intervals.  If you define this all values for ticks > 1
 * will be mapped to ticks = 1.
 */
#undef OLD_HEARTBEAT
 
/* LARGEST_PRINTABLE_STRING is the size of the vsprintf() buffer in comm.c
 * add_message(). Instead of blindly making this value larger, mudlib
 * should be coded to not send huge strings to users.
 */
#define LARGEST_PRINTABLE_STRING 8192
 
/* MESSAGE_BUFFER_SIZE determines the size of the buffer for output that
 * is sent to users.  
 */
#define MESSAGE_BUFFER_SIZE 4096
 
/* number of bits to use in the call_other cache (in interpret.c).  Somewhere
 * between six (6) and ten (10) is probably sufficient 
 */
#define APPLY_CACHE_BITS 11
 
/* define this if you want call_other (apply_low) cache statistics 
 */
#define CACHE_STATS
 
/* define CAST_CALL_OTHERS if you want to require casting of call_other's
 * this was the default behavior of the driver prior to this addition.
 */
#undef CAST_CALL_OTHERS
 
/* INTERACTIVE_CATCH_TELL
 * define this if you want catch_tell called on interactives as well as
 * NPCs.  If this is defined, user.c will need a catch_tell(msg) method that
 * calls receive(msg);
*/
#undef INTERACTIVE_CATCH_TELL
 
/* if defined, all writes/tells/etc to noninteractive objects will be written
 * to stderr prefixed with a ']' (old behavior)
 */
#define NONINTERACTIVE_STDERR_WRITE
 
/* TRACE: define this to enable the trace() and traceprefix() efuns.
 * (keeping this undefined will cause the driver to run faster).
 */
#undef TRACE
 
/* define this if you want restricted ed mode enabled
 */
#define RESTRICTED_ED
 
/* define this if you want to disable shadows in your driver.
 */
#undef NO_SHADOWS
 
/* SNOOP_SHADOWED: define this if you want snoop to report what is
 * sent to the player even in the event that the player's catch_tell() is
 * shadowed and the player may not be seeing what is being sent.  Messages
 * of this sort will be prefixed with $$.
 */
#undef SNOOP_SHADOWED
 
/* RECEIVE_SNOOP: define this if you want snoop text to be sent to
 * the receive_snoop() function in the snooper object (instead of being
 * sent directly via add_message()).  This is useful if you want to
 * build a smart client that does something different with snoop messages.
 */
#define RECEIVE_SNOOP
 
/* PROFILE_FUNCTIONS: define this to be able to measure the CPU time used by
 * all of the user-defined functions in each LPC object.  Note: defining
 * this adds three long ints (12 bytes on 32-bit machines) to the function
 * header structs.  Also note that the resolution of the getrusage() timer
 * may not be high enough on some machines to give non-zero execution
 * times to very small (fast) functions.  In particular if the clock
 * resolution is 1/60 of a second, then any time less than approxmately 15k
 * microseconds will resolve to zero (0).
*/
#undef PROFILE_FUNCTIONS

/* DISALLOW_BUFFER_TYPE: if this is #define'd then LPC code using the 'buffer'
   type won't be allowed to compile (since the 'buffer' type won't be
   recognized by the lexer.
*/
#undef DISALLOW_BUFFER_TYPE
 
/* BINARIES: define this to enable the 'save_binary' pragma.
 * This pragma, when set in a program, will cause it to save a
 * binary image when loaded, so that subsequent loadings will
 * be much faster.  The binaries are saved in the directory
 * specified in the configuration file.  The binaries will not
 * load if the LPC source or any of the inherited or included
 * files are out of date, in which case the file is compiled
 * normally (and may save a new binary).
 * 
 * In order to save the binary, valid_save_binary() is called
 * in master.c, and is passed the name of the source file.  If
 * this returns a non-zero value, the binary is allowed to be
 * saved.  Allowing any file by any wizard to be saved as a
 * binary is convenient, but may take up a lot of disk space.
 *
 * WARNING: Currently, this doesn't work on 64 bit machines (ie DEC Alpha)
 *          Might not work on Linux or IRIX
 */
#define BINARIES
 
/* ALWAYS_SAVE_BINARIES: define this to cause every LPC file to behave
 * as if it contains a line '#pragma save_binary'.  This #define has no
 * affect if BINARIES is not defined.
*/
#undef ALWAYS_SAVE_BINARIES
 
/* TRACE_CODE
 * define this for to enable code tracing
 * (the driver will print out the previous lines of code to an error)
 * eval_instruction() runs about twice as fast when this is not defined
 * (for the most common eoperators).
 */
#undef TRACE_CODE
 
/* Some maximum string sizes
 */
#define SMALL_STRING_SIZE     100
#define LARGE_STRING_SIZE     1000
#define COMMAND_BUF_SIZE      2000
 
/* number of levels of nested datastructures allowed -- this limit prevents
 * crashes from occuring when saving objects containing variables containing
 * recursive datastructures (with circular references).
 */
#define MAX_SAVE_SVALUE_DEPTH 25
 
/* Miscellaneous config options that should probably be in the runtime
 * config file
 */
 
/* MAX_LOCAL: maximum number of local variables allowed per LPC function */
#define MAX_LOCAL 25              /* get_config_int(8) */
/* MAX_USERS: maximum number of simultaneous interactive users allowed */
#define MAX_USERS 50          /* get_config_int(12) */
/* MAX_EFUN_SOCKS: maximum number of efun sockets */
#define MAX_EFUN_SOCKS 16         /* get_config_int(24) */
 
#define EVALUATOR_STACK_SIZE 1000 /* get_config_int(4) */
#define COMPILER_STACK_SIZE 200   /* get_config_int(5) */
#define MAX_TRACE 30              /* get_config_int(6) */
#define LIVING_HASH_SIZE 101      /* get_config_int(20) */
 
/* NEXT_MALLOC_DEBUG: define this if using a NeXT and you want to enable
   the malloc_check() and/or malloc_debug() efuns.  Run the 'man malloc_debug'
   command on the NeXT to find out what the arguments to malloc_debug(int)
   mean.  The malloc_check() efun calls the NeXT NXMallocCheck() system
   call which does a consistency check on malloc's data structures (this
   consistency check is done at each malloc() and free() for certain
   malloc_debug() levels).  A non-zero return value indicates there was
   a consistency problem.  For those NeXT users wanting a bit more
   performance out of malloc, try defining NEXT_MALLOC_DEBUG and calling the
   malloc_debug(-1) efun (with an arg of -1).  This will turn all
   malloc debugging off and call malloc_singlethreaded() which the NeXT
   malloc man page claims can make NeXT system malloc 10% to 15% faster.
   This #define has no affect on the driver if not using the NeXTSTEP OS.
   **Warning: if you use a NeXT and define NEXT_MALLOC_DEBUG, be sure to
   protect the use of the malloc_check() and malloc_debug() efuns since
   setting certain debug levels can cause malloc() and free() to become
   _very_ slow (protect efuns by using simul_efuns and valid_override).
   Note: malloc_debug(6) is a good compromise between efficiency and
   completeness of malloc debugging (malloc/free will be about half as fast).
*/
#define NEXT_MALLOC_DEBUG

/* Current version of the driver
 * (the patchlevel is automatically appended to the end)
 */
#define VERSION "0.9."