RECOVER(6)                                             RECOVER(6)



NAME
       recover - recover a NetHack game interrupted by disaster

SYNOPSIS
       recover [ -d directory ] base1 base2 ...

DESCRIPTION
       Occasionally, a NetHack game will be interrupted by disas­
       ter when the game or the system crashes.  Prior to NetHack
       v3.1,  these  games  were lost because various information
       like the player's inventory was kept only in memory.  Now,
       all  pertinent  information can be written out to disk, so
       such games can be recovered at the point of the last level
       change.

       The  base  options  tell  recover  which files to process.
       Each base option specifies recovery of a separate game.

       The -d option, which must be  the  first  argument  if  it
       appears,  supplies  a directory which is the NetHack play­
       ground.  It overrides the value from NETHACKDIR,  HACKDIR,
       or  the directory specified by the game administrator dur­
       ing compilation (usually /usr/games/lib/nethackdir).

       For recovery to be possible, nethack must have  been  com­
       piled  with  the INSURANCE option, and the run-time option
       checkpoint must  also  have  been  on.   NetHack  normally
       writes  out files for levels as the player leaves them, so
       they will be ready for return visits.  When checkpointing,
       NetHack  also writes out the level entered and the current
       game state on every level change.   This  naturally  slows
       level changes down somewhat.

       The  level file names are of the form base.nn, where nn is
       an internal bookkeeping number for the  level.   The  file
       base.0  is  used  for  game  identity,  locking, and, when
       checkpointing, for the game state.  Various OSes use  dif­
       ferent  strategies for constructing the base name.  Micro­
       computers use the character name, possibly  truncated  and
       modified  to  be  a legal filename on that system.  Multi-
       user systems use the (modified) character name prefixed by
       a user number to avoid conflicts, or "xlock" if the number
       of concurrent players is being limited.  It may be  neces­
       sary  to  look  in the playground to find the correct base
       name of the  interrupted  game.   recover  will  transform
       these  level  files  into  a save file of the same name as
       nethack would have used.

       Since recover must be able to read and delete  files  from
       the  playground and create files in the save directory, it
       has interesting interactions with game  security.   Giving
       ordinary  players access to recover through setuid or set­
       gid  is  tantamount  to  leaving  the  playground   world-
       writable,  with  respect  to  both cheating and messing up
       other players.  For a single-user system, this  of  course
       does  not  change  anything,  so some of the microcomputer
       ports install recover by default.

       For a multi-user system, the game administrator  may  want
       to arrange for all .0 files in the playground to be fed to
       recover when the  host  machine  boots,  and  handle  game
       crashes   individually.    If   the   user  population  is
       sufficiently trustworthy, recover can  be  installed  with
       the  same  permissions  the  nethack  executable  has.  In
       either case, recover is easily compiled from the distribu­
       tion utility directory.

NOTES
       Like nethack itself, recover will overwrite existing save­
       files of the same name.  Savefiles created by recover  are
       uncompressed;   they   may  be  compressed  afterwards  if
       desired, but even a compression-using  nethack  will  find
       them in the uncompressed form.

SEE ALSO
       nethack(6)

BUGS
       recover makes no attempt to find out if a base name speci­
       fies a game in progress.  If  multiple  machines  share  a
       playground, this would be impossible to determine.

       recover  should  be  taught  to use the nethack playground
       locking mechanism to avoid conflicts.



                          9 January 1993               RECOVER(6)
