NetHack's man pages already preponderantly use man(7) `IR` macro for this purpose. Align outliers. The "SEE ALSO" section of doc/mn.7 is a partial exception. While the rest of the document sets cross-referenced man page topics in italics, this section of the page does not. It seems likely that this decision was made in deliberate imitation of Seventh Edition Unix manuals (1979) or their descendants in USG/USL and BSD Unices. That feature of the Unix man pages, however, was not deliberate per Doug McIlroy, the author of the man(7) macros and editor of Volume 1 of the Seventh Edition Unix Programmer's Manual, per his communication on the groff mailing list. But NetHack has a policy of not modifying Matt Bishop's "mn" macro file or its man page, so I leave that exception in place. References: https://lists.gnu.org/archive/html/groff/2021-08/msg00023.html https://lists.gnu.org/archive/html/groff/2021-08/msg00040.html https://github.com/NetHack/NetHack/pull/977#issuecomment-1424996578
157 lines
4.8 KiB
Plaintext
157 lines
4.8 KiB
Plaintext
.\"DO NOT REMOVE NH_DATESUB .TH RECOVER 6 "Date(%-d %B %Y)" Project(uc)
|
|
.TH RECOVER 6 "26 April 2026" NETHACK
|
|
.\"DO NOT REMOVE NH_DATESUB .ds Nd Date(%Y)
|
|
.ds Nd 2024
|
|
.de NB
|
|
.ds Nb \\$2
|
|
..
|
|
.de NR
|
|
.ds Nr \\$2
|
|
..
|
|
.NB $NHDT-Branch: NetHack-5 $
|
|
.NR $NHDT-Revision: 1.12 $
|
|
.\" groff and AT&T-descended troffs use different hyphenation patterns.
|
|
.\" Don't hyphenate the last word on a page or column, or
|
|
.\" before/after last/first 2 characters of a word.
|
|
.ie \n(.g .hy 12
|
|
.el .hy 14
|
|
.ds Na Kenneth Lorber
|
|
.SH NAME
|
|
recover \- recover a NetHack game interrupted by disaster
|
|
.SH SYNOPSIS
|
|
.B recover
|
|
[
|
|
.B \-d
|
|
.I directory
|
|
]
|
|
.I "base1 base2" ...
|
|
.SH DESCRIPTION
|
|
Occasionally, a NetHack game will be interrupted by disaster
|
|
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.
|
|
.PP
|
|
The
|
|
.I base
|
|
options tell
|
|
.I recover
|
|
which files to process.
|
|
Each base option specifies recovery of a separate game.
|
|
.PP
|
|
The
|
|
.B \-d
|
|
option, which must be the first argument if it appears,
|
|
supplies a directory which is the NetHack playground.
|
|
It overrides the value from NETHACKDIR, HACKDIR, or the directory
|
|
specified by the game administrator during compilation
|
|
(usually /usr/games/lib/nethackdir).
|
|
.ig
|
|
.PP
|
|
^?ALLDOCS
|
|
For recovery to be possible,
|
|
.I nethack
|
|
must have been compiled with the INSURANCE option, and the run-time option
|
|
.I checkpoint
|
|
must also have been on.
|
|
^:
|
|
^?INSURANCE
|
|
For recovery to be possible,
|
|
.I nethack
|
|
must have been compiled with the INSURANCE option (this configuration was),
|
|
and the run-time option
|
|
.I checkpoint
|
|
must also have been on.
|
|
^:
|
|
This configuration of
|
|
.I nethack
|
|
was created without support for recovery.
|
|
^.
|
|
^.
|
|
..
|
|
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.
|
|
.PP
|
|
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 different strategies for constructing the base name.
|
|
Microcomputers 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 necessary to look in the playground to find the correct
|
|
base name of the interrupted game.
|
|
.I recover
|
|
will transform these level files into a save file of the same name as
|
|
.I nethack
|
|
would have used.
|
|
.PP
|
|
Since
|
|
.I 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
|
|
.I recover
|
|
through setuid or setgid 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
|
|
.I recover
|
|
by default.
|
|
.PP
|
|
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,
|
|
.I recover
|
|
can be installed with the same permissions the
|
|
.I nethack
|
|
executable has.
|
|
In either case,
|
|
.I recover
|
|
is easily compiled from the distribution utility directory.
|
|
.SH NOTES
|
|
Like
|
|
.I nethack
|
|
itself,
|
|
.I recover
|
|
will overwrite existing savefiles of the same name.
|
|
Savefiles created by
|
|
.I recover
|
|
are uncompressed;
|
|
they may be compressed afterwards if desired,
|
|
but even a compression-using
|
|
.I nethack
|
|
will find them in the uncompressed form.
|
|
.SH "SEE ALSO"
|
|
.IR nethack (6)
|
|
.SH BUGS
|
|
.I recover
|
|
makes no attempt to find out if a base name specifies a game in progress.
|
|
If multiple machines share a playground, this would be impossible to
|
|
determine.
|
|
.PP
|
|
.I recover
|
|
should be taught to use the nethack playground locking mechanism to
|
|
avoid conflicts.
|
|
.SH COPYRIGHT
|
|
.\" All troffs and nroffs support `\(co` except Plan 9 nroff, but Plan 9
|
|
.\" offers no test for special character availability, and its feature
|
|
.\" set too closely resembles DWB 3.3 to test for it. Use a string with
|
|
.\" any nroff-mode formatter not claiming groff compatiblity.
|
|
.ds co \(co
|
|
.if !\n(.g .if n .ds co (C)\" in principle, should be just "c"
|
|
This file is Copyright \*(co \*(Na, \*(Nd for version \*(Nb:\*(Nr.
|
|
NetHack may be freely redistributed.
|
|
See license for details.
|