56 lines
2.5 KiB
Plaintext
56 lines
2.5 KiB
Plaintext
$NHDT-Date: 1426969026 2015/03/21 20:17:06 $ $NHDT-Branch: master $:$NHDT-Revision: 1.137 $
|
|
code_features.txt
|
|
|
|
Developer-useful info about code features, assumptions, purpose,
|
|
rationale, etc.
|
|
|
|
==============================================
|
|
PREFIXES_IN_USE and NOCWD_ASSUMPTIONS
|
|
|
|
Those provide a storage mechanism for holding the paths to various different
|
|
types of files. Those paths are stored in the fqn_prefix[] array. They are a
|
|
mechanism for enabling separation of the different files that NetHack needs.
|
|
|
|
The prefixes are added to the beginning of file names by various routines in
|
|
files.c immediately prior to opening one of the types of files that the game
|
|
uses.
|
|
|
|
They aren't about config file options (although config file options would be
|
|
one way to set non-default values for some of the paths in the fqn_prefix[]
|
|
array). Obviously the very first path needed (now sysconfdir, previously
|
|
configdir) isn't viable for setting via config file options, but the game
|
|
still needs to hunt it down "someplace." When the "someplace" is figured
|
|
out, that place (path) would be stored in fqn_prefix[SYSCONPREFIX]. How it
|
|
gets stored in fqn_prefix[SYSCONPREFIX] is up to us as developers.
|
|
|
|
Any of the fqn_prefix[] entries can be set somehow. It could be done in port
|
|
startup code; in options processing; in config file processing; by
|
|
translating a system environment variable such as USERPROFILE; whatever
|
|
you/we want. The point is that NOCWD_ASSUMPTIONS and PREFIXES_IN_USE are
|
|
there to ensure that there is a place to store that path information. The
|
|
code to *utilize* the information is already in files.c (see fqname()).
|
|
|
|
There is a fqn_prefix[] entry for holding the path to each of the following:
|
|
PREFIX NAME
|
|
0 HACKPREFIX hackdir
|
|
1 LEVELPREFIX leveldir location to create level files
|
|
2 SAVEPREFIX savedir location to create/read saved games
|
|
3 BONESPREFIX bonesir location to create/read bones
|
|
4 DATAPREFIX datadir location to read data.base etc.
|
|
5 SCOREPREFIX scoredir location to read/write scorefile
|
|
6 LOCKPREFIX lockdir location to create/read lock files
|
|
7 SYSCONFPREFIX sysconfdir location to read SYSCF_FILE
|
|
8 CONFIGPREFIX configdir location to read user configuration file
|
|
9 TROUBLEPREFIX troubledir location to place panic files etc.
|
|
|
|
To recap, they are about enabling "different paths for different things", and
|
|
separation of:
|
|
- read-only stuff from read-write stuff.
|
|
- sysadmin stuff from user-writeable stuff.
|
|
etc.
|
|
|
|
=================== NEXT FEATURE ==========================
|
|
|
|
|
|
|