Created
September 12, 2019 15:11
-
-
Save justinm/a9bf5725e940ba793e5fccb4fdbfb2f9 to your computer and use it in GitHub Desktop.
FluffOS Local Options
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This file contains detailed readme for each local_options option. | |
/**************************************************************************** | |
* EVERY time you change ANYTHING in this file, RECOMPILE from scratch. * | |
* (type "make clean" then "make" on a UNIX system) Failure to do so may * | |
* cause the driver to behave oddly. * | |
****************************************************************************/ | |
#ifndef _LOCAL_OPTIONS_H_ | |
#define _LOCAL_OPTIONS_H_ | |
/* 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. | |
* Note that anything defined in this file is also visible to LPC files | |
* surrounded by __. So #define FOO in this file defines __FOO__ for | |
* all LPC files. This allows code like: | |
* | |
* #ifdef __SENSIBLE_MODIFIERS__ | |
* ... | |
*/ | |
/**************************************************************************** | |
* COMPATIBILITY * | |
* --------------- * | |
* The MudOS driver and following this the extensions making up the FluffOS * | |
* driver has evolved quite a bit over the years. These defines are mainly * | |
* to preserve old behavior in case people didn't want to rewrite the * | |
* relevant portions of their code. * | |
* * | |
* In most cases, code which needs these defines should be rewritten when * | |
* possible. The 'Compat status' field is designed to give an idea how * | |
* likely it is that support for that option will be removed in the near * | |
* future. Certain options are fairly easy to work around, and double * | |
* the size of the associated code, as well as the maintenance workload, * | |
* and can make the code significantly more complex or harder to read, so * | |
* supporting them indefinitely is impractical. * | |
* * | |
* WARNING: If you are using software designed to run with the MudOS driver * | |
* it may assume certain settings of these options. Check the * | |
* instructions for details. * | |
****************************************************************************/ | |
/* NO_ADD_ACTION: define this to remove add_action, commands, livings, etc. | |
* process_input() then becomes the only way to deal with player input. | |
* | |
* Compat status: next to impossible to simulate, hard to replace, and | |
* very, very widely used. | |
*/ | |
#undef NO_ADD_ACTION | |
/* NO_SNOOP: disables the snoop() efun and all related functionality. | |
*/ | |
#undef NO_SNOOP | |
/* NO_ENVIRONMENT: define this to remove the handling of object containment | |
* relationships by the driver | |
* | |
* Compat status: hard to simulate efficiently, and very widely used. | |
*/ | |
#undef NO_ENVIRONMENT | |
/* NO_WIZARDS: for historical reasons, MudOS used to keep track of who | |
* is and isn't a wizard. Defining this removes that completely. | |
* If this is defined, the wizardp() and related efuns don't exist. | |
* | |
* Also note that if it is not defined, then non-wizards are always put | |
* in restricted mode when ed() is used, regardless of the setting of | |
* the restrict parameter. | |
* | |
* Compat status: easy to simulate and dated. | |
*/ | |
#undef NO_WIZARDS | |
/* NO_LIGHT: define this to disable the set_light() and driver maintenance | |
* of light levels in objects. You can simulate it via LPC if you want... | |
* | |
* Compat status: Very dated, easy to simulate, and gross. | |
*/ | |
#undef NO_LIGHT | |
/* OLD_ED: ed() efun backwards compatible with the old version. The new | |
* version requires/allows a mudlib front end. | |
* | |
* Compat status: Easily simulated. | |
*/ | |
#define OLD_ED | |
/* In ed auto-indent, | |
* 1) does the case line get indented after the switch() ? | |
* 2) How far do we indent? (this can also be set in the mudlib) | |
*/ | |
#undef ED_INDENT_CASE | |
#define ED_INDENT_SPACES 4 | |
/* use tab's for auto-indent? */ | |
#undef ED_USE_TABS | |
/* every which column is a tab stop? */ | |
#define ED_TAB_WIDTH 8 | |
/* RECEIVE_ED: define this if you want normal ed output to go to a | |
* receive_ed() apply in the player ob. Some errors still go directly | |
* to output. Useful for post-processing (perhaps colorizing?) ed | |
* output. Prototype: mixed receive_ed(string txt, string fname); | |
* If fname, return a string that ed will output, 0 to let ed handle | |
* the output in the default way, or 1 to handle the output yourself. | |
* If fname == 0, output is help text and you may return any of the above | |
* or an array of strings that will be more'ed. | |
* This works wirh OLD_ED enabled only!!! | |
*/ | |
#undef RECEIVE_ED | |
/* RESTRICTED_ED: define this if you want restricted ed mode enabled. | |
*/ | |
#define RESTRICTED_ED | |
/* SENSIBLE_MODIFIERS: | |
* Turning this on changes a few things, which may break old code: | |
* | |
* (1) 'static' is not recognized; either 'nosave' or 'protected' must | |
* be used instead. | |
* (2) The old meaning of 'public' is no longer allowed. Explicit | |
* functions must be defined at each level to allow access to | |
* privately inherited functions. | |
* (3) 'public' now means the default visibility. Previously there was | |
* no keyword that meant this (before you ask, 'public' meant something | |
* else, and if you don't know that, you probably don't have any reason | |
* to care about the old meaning). | |
*/ | |
#undef SENSIBLE_MODIFIERS | |
/**************************************************************************** | |
* MISCELLANEOUS * | |
* --------------- * | |
* Various options that affect the way the driver behaves. * | |
* * | |
* WARNING: If you are using software designed to run with the MudOS driver * | |
* it may assume certain settings of these options. Check the * | |
* instructions for details. * | |
****************************************************************************/ | |
/* | |
* Define this in order to use Fermat@Equilibria's MD5 based crypt() instead | |
* of the operating system's. It has the advantage of giving the same value | |
* on all architectures, and being stronger than the standard UNIX crypt(). | |
* | |
* Consider use PACKAGE_CRYPTO instead. | |
*/ | |
#define CUSTOM_CRYPT | |
/* | |
* Some minor tweaks that make it a bit easier to run code designed to run | |
* on LPmud 3.2/3.2.1. Currently has the following effects: | |
* | |
* . m_indices() and m_values() are synonyms for keys() and values(), | |
* respectively | |
* . map_delete() returns it's first argument | |
* . inherit_list() means deep_inherit_list(), not shallow_inherit_list() | |
* . heart_beat_info() is a synonym for heart_beats() | |
*/ | |
#undef COMPAT_32 | |
/* DEFAULT_PRAGMAS: This should be a sum of pragmas you want to always | |
* be on, i.e. | |
* | |
* #define DEFAULT_PRAGMAS PRAGMA_STRICT_TYPES + PRAGMA_SAVE_TYPES | |
* | |
* will make every LPC file behave as if it had the lines: | |
* #pragma strict_types | |
* #pragma save_types | |
* | |
* for no default pragmas: | |
* #define DEFAULT_PRAGMAS 0 | |
* | |
* If you don't know what these are, 0 is a good choice. | |
* | |
* Supported pragmas: | |
* PRAGMA_STRICT_TYPES: enforces strict type checking | |
* PRAGMA_WARNINGS: issues warnings about various dangerous things in | |
* your code | |
* PRAGMA_SAVE_TYPES: save the types of function arguments for checking | |
* calls to functions in this object by objects that | |
* inherit it. | |
* PRAGMA_OPTIMIZE: make a second pass over the generated code to | |
* optimize it further. | |
* PRAGMA_ERROR_CONTEXT:include some text telling where on the line a | |
* compilation error occured. | |
*/ | |
#define DEFAULT_PRAGMAS PRAGMA_SAVE_TYPES + PRAGMA_ERROR_CONTEXT + PRAGMA_OPTIMIZE | |
/* 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). | |
* If you are changing this and using the builtin compression via | |
* PACKAGE_COMPRESS you might want to change SAVE_GZ_EXTENSION below too. | |
*/ | |
#define SAVE_EXTENSION ".o" | |
/* PRIVS: define this if you want object privileges. 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, privileges 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 | |
/* NO_SHADOWS: define this if you want to disable shadows in your driver. | |
*/ | |
#undef NO_SHADOWS | |
/* USE_ICONV: Use iconv to translate input and output from/to the users char | |
* encoding | |
*/ | |
#undef USE_ICONV | |
/* IPV6: Use IP version 6 instead of 4, for most people the only difference | |
* will be that numerical IP addresses get ::ffff: added in front.*/ | |
#undef IPV6 | |
/* static user space dtrace probes, try them if you have dtrace! */ | |
#undef DTRACE | |
/**************************************************************************** | |
* PACKAGES * | |
* -------- * | |
* Defining some/all of the following add certain efuns, and sometimes * | |
* add/remove code from the driver. * | |
* * | |
* if PACKAGE_XYZZY is defined here, then the code in packages/xyzzy.c * | |
* and the efuns in packages/xyzzy_spec.c will be added to the driver. * | |
****************************************************************************/ | |
/* base packages, you don't want to undef these two */ | |
#define PACKAGE_OPS | |
#define PACKAGE_CORE | |
/* various miscellaneous efuns */ | |
#define PACKAGE_CONTRIB | |
/* efuns that are only of use to those that know something about driver | |
internals */ | |
#define PACKAGE_DEVELOP | |
/* PACKAGE_MATH: determines whether or not the math efuns (for floats) are | |
included. | |
*/ | |
#define PACKAGE_MATH | |
/* PACKAGE_MATRIX: determines whether or not the 3d graphics efuns (for floats) | |
* are included - see packages/matrix.spec for a list. | |
*/ | |
#undef PACKAGE_MATRIX | |
/* PACKAGE_MUDLIB_STATS: define this to enable domain and author stats | |
* maintenance by the driver. These mudlib stats are more domain | |
* based than user based, and replaces the traditional wiz_list stats. | |
*/ | |
#define PACKAGE_MUDLIB_STATS | |
/* PACKAGE_SOCKETS: define this to enable the socket efunctions. This | |
* causes HAS_SOCKETS to be defined for all LPC objects. | |
*/ | |
#define PACKAGE_SOCKETS | |
/* PACKAGE_PARSER: Natural language parsing efuns for interactive fiction | |
* type applications | |
*/ | |
#undef PACKAGE_PARSER | |
/* PACKAGE_EXTERNAL: Allows the driver to exec() commands specified in the | |
* config file. | |
*/ | |
#define PACKAGE_EXTERNAL | |
/* PACKAGE_DB: efuns for external database access using msql */ | |
#undef PACKAGE_DB | |
/* If PACKAGE_DB is defined above, you must pick at least one of the following supported | |
* databases | |
* | |
* ATTENTION: | |
* no two choices must use the same number and if more then one type is | |
* choosen the mudlib should provide a corresponding headerfile for use with | |
* efun::db_connect() | |
*/ | |
#ifdef PACKAGE_DB | |
#define USE_MYSQL 1 | |
#undef USE_MSQL | |
#undef USE_POSTGRES | |
#undef USE_SQLITE3 | |
#define DEFAULT_DB USE_MYSQL | |
#endif | |
/*PACKAGE_ASYNC: adds some efuns for asyncronous IO */ | |
#define PACKAGE_ASYNC | |
/*PACKAGE_SHA1: adds a function to calculate the sha1 hash of a string | |
* sha1(string). Use PACKAGE_CRYPTO instead if possible. */ | |
#define PACKAGE_SHA1 | |
/*PACKAGE_CRYPTO: adds a function that does multiple hash types hash(hash, | |
* string), needs openssl lib and includes and -lssl in system_libs*/ | |
#undef PACKAGE_CRYPTO | |
/* | |
PACKAGE_TRIM: efuns for remove leading / trailing whitepsaces (or chars in | |
provided charset) | |
Functions: | |
- trim: Remove leading and trailing whitespaces (or in provided charset). | |
Example: | |
- " my test " : "my test" | |
- ltrim: Remove leading whitespaces (and others). | |
Example: | |
- " my test " : "my test " | |
- rtrim: Remove trailing whitespaces (and others). | |
Example: | |
- " my test " : " my test" | |
Characters that remove by default: isspace() == 1, which is: | |
' ' (0x20) space (SPC) | |
'\t' (0x09) horizontal tab (TAB) | |
'\n' (0x0a) newline (LF) | |
'\v' (0x0b) vertical tab (VT) | |
'\f' (0x0c) feed (FF) | |
'\r' (0x0d) carriage return (CR) | |
*/ | |
#define PACKAGE_TRIM | |
/* | |
PACKAGE PCRE: | |
efuns for perl compatible regular expressionsi | |
*/ | |
#define PACKAGE_PCRE | |
/*PACKAGE DWLIB: some discworld mudlib simuls coded in C (well just one right | |
now) */ | |
#undef PACKAGE_DWLIB | |
/**************************************************************************** | |
* UID PACKAGE * | |
* ----------- * | |
* UIDS are the basis for some mudlib security systems. Basically, they're * | |
* preserved for backwards compatibility, as several ways of breaking * | |
* almost any system which relies on them are known. (No, it's not a flaw * | |
* of uids; only that b/c of the ease with which LPC objects can call * | |
* each other, it's far too easy to leave holes) * | |
* * | |
* If you don't care about security, the first option is probably what you * | |
* want. * | |
****************************************************************************/ | |
/* | |
* PACKAGE_UIDS: define this if you want a driver that does use uids. | |
* | |
*/ | |
#define PACKAGE_UIDS | |
#ifdef PACKAGE_UIDS | |
/* 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. | |
*/ | |
#define 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 | |
#endif | |
/* PACKAGE_COMPRESS: Enable MCCP support and compressed save files | |
SAVE_GZ_EXTENSION: save extension for compressed files | |
*/ | |
#define PACKAGE_COMPRESS | |
#define SAVE_GZ_EXTENSION ".o.gz" | |
#undef PACKAGE_THREAD | |
#define PACKAGE_MATRIX | |
#define HAS_STATUS_TYPE | |
#endif /* _LOCAL_OPTIONS_H_ */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment