$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 ==========================