--- /dev/null
+$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 ==========================
+
+
+