DESIGN
  Directory Organisation

LAST UPDATE
  Mateese, 14-Jul-1996

DESCRIPTION
  /:
    Top directory, holding miscellaneous files like the driver log files.

  /adm:
    Administrative data and objects.
  /adm/etc
    Miscellaneous administrative data.
  /adm/etc/closed
    To close the mud, place a file here. See the directories README for
    instructions.
  /adm/obj
    Objects performing administrative 'one-shot' actions, and admin tools.
  /adm/svc
    Objects performing administrative functions throughout the whole
    uptime.

  /b
    Standard modules to build objects through inheritance.

  /bin
    Global player command objects.

  /d
    Top directory for domain directories. Domain 'micro' holds the
    central world files.
  /d/<name>
    Parent directory for domain <name>.
    Also, the error logfile goes here as '.err'.
  /d/<name>/base
    Common domain objects.
  /d/<name>/<wizname>
    Domain objects provided by wizard <wizname>. Ideally such directories
    never exist.

  /doc
    All sorts of documentation...
  /doc/adm
    ... /adm objects.
  /doc/basics
    ... basic game concepts implemented in MicroMud.
  /doc/design
    ... various design decisions made in creating MicroMud.
  /doc/sefun
    ... simulated efuns.
  /doc/secure
    ... /secure objects.

  /etc
    Miscellaneous files, like the WELCOME message.

  /g (/g/bin, /g/o, /g/r, /g/svc)
    Objects and files ready for general use throughout the game.
    In contrast to /b and /std, this directory is accessible to
    Arches as well.
    For example approved skillservers may go into /g/svc.
    Idea is that every object in the mud inherits its general features
    by one of the /g-objects, having it's own code to add just its
    special abilities. This way, consistence throughout the whole mud
    can be achieved more easily.

  /g/bin
    Arch-provided player commands.
  /g/i
    Arch-provided include files.

  /i
    Include files for the standard objects and modules.
  /i/sys
    Include files concerning system matters, both the driver and
    the /secure-objects.

  /log
    All sorts of logfiles.
  /log/adm
    Administrative logfiles.
  /log/err
    Error logfiles for errors in non-wizard/non-domain objects.

  /save
    Various insensitive savefiles.
  /save/[a-z]
    Hashdirectories for the player savefiles.
    For faster access, they are 'hashed'by their names first letter.
    These 'hash'directories are created automatically.
  /save/mail
    Parent directory for mail savefiles.
  /save/mail/[a-z]
    Player savefiles holding the mails sent and received.
    For faster access, they are 'hashed'by their names first letter.
    These 'hash'directories are created automatically.

  /secure
    Sensitive system objects which are vital for a running game.
  /secure/save
    Sensitive system savefiles.
  /secure/save/[a-z]
    Player-savefiles holding sensitive data like the password.
    For faster access, they are 'hashed'by their names first letter.
    These 'hash'directories are created automatically.

  /std
    Standard objects for inheritance/cloning.

  /w
    Top directory for the wizard homedirs.
  /w/<name>
    Homedirectory for wizard <name>.
  /w/<name>/secure
    Private directory for wizard <name>.


  The read/write/object permissions are best explained using the
  figure from security(C):

  /                  : r: 0;              w: arch;           o: 0
  +-adm              : r: 0;              w: admin;          o: 1
  +-b                : r: 0;              w: admin;          o: admin
  +-bin              : r: 0;              w: admin;          o: 1
  +-d                : r: 0;              w: arch;           o: 0
  | `-<dname>        : r: 0;              w: lord:<dname>;   o: lord:<dname>
  |   +-base         : r: 0;              w: member:<dname>; o: lord:<dname>
  |   `-<wizard>     : r: 0;              w: member:<dname>; o: lord:<dname>
  +-doc              : r: 0;              w: arch;           o: 0
  +-g                : r: 0;              w: arch;           o: arch
  +-i                : r: 0;              w: arch;           o: 0
  | `-sys            : r: 0;              w: admin;          o: 0
  +-log              : r: 0;              w: 0;              o: 0
  | `-adm            : r: 0;              w: arch;           o: 0
  +-save             : r: 0;              w: arch;           o: 0
  | `-mail           : r: 0:              w: admin;          o: 0
  |   `-<n>          : r: 0:              w: admin;          o: 0
  |     `-<name>.o   : r: private:<name>; w: admin;          o: 0
  +-secure           : r: 0;              w: 1;              o: 1
  | `-save           : r: 0;              w: admin;          o: 0
  |   `-<n>          : r: 0;              w: admin;          o: 0
  |     `-<name>.o   : r: wizard:<name>;  w: admin;          o: 0
  +-std              : r: 0;              w: admin;          o: admin
  `-w                : r: 0;              w: arch;           o: 0
    `-<name>         : r: 0;              w: wizard:<name>;  o: wizard:<name>
      `-secure       : r: wizard:<name>;  w: wizard:<name>;  o: wizard:<name>


SEE ALSO
  security(C)
