From a6c46bbd85a1e604da5bc59f0c037eb1475fee8d Mon Sep 17 00:00:00 2001 From: nhmall Date: Tue, 14 Jan 2020 11:35:06 -0500 Subject: [PATCH 01/12] housekeeping items for 3.6.5 - first pass --- README | 49 +++++++++++++++------------------- doc/Guidebook.mn | 2 +- doc/Guidebook.tex | 2 +- include/global.h | 2 +- include/patchlevel.h | 24 +++++++++++++++-- src/windows.c | 2 +- sys/amiga/.gitattributes | 2 +- sys/atari/.gitattributes | 2 +- sys/be/.gitattributes | 2 +- sys/msdos/.gitattributes | 2 +- sys/os2/.gitattributes | 2 +- sys/share/.gitattributes | 10 +++---- sys/unix/README.linux | 4 +-- sys/unix/sysconf | 2 +- sys/vms/Install.vms | 4 +-- sys/vms/Makefile.src | 2 +- sys/vms/vmsbuild.com | 2 +- sys/wince/.gitattributes | 2 +- sys/wince/ceinc/.gitattributes | 2 +- sys/wince/winhack.rc | 12 ++++----- sys/wince/winhcksp.rc | 12 ++++----- sys/winnt/Install.nt | 6 ++--- sys/winnt/Makefile.gcc | 2 +- sys/winnt/Makefile.msc | 2 +- sys/winnt/nethack.def | 2 +- sys/winnt/sysconf.template | 2 +- util/makedefs.c | 2 +- win/gem/.gitattributes | 2 +- win/gnome/.gitattributes | 2 +- win/win32/NetHackW.rc | 10 +++---- win/win32/mswproc.c | 2 +- win/win32/nethack.rc | 10 +++---- 32 files changed, 100 insertions(+), 85 deletions(-) diff --git a/README b/README index 92214e246..36c2368a7 100644 --- a/README +++ b/README @@ -1,14 +1,15 @@ - NetHack 3.6.4 -- General information December 18, 2019 + NetHack 3.6.5 -- General information January 2020 NetHack 3.6 is an enhancement to the dungeon exploration game NetHack, which is a distant descendent of Rogue and Hack, and a direct descendent of NetHack 3.4 as there was no NetHack 3.5 release. -NetHack 3.6.4 is the official release of NetHack that follows NetHack 3.6.3 -and contains all bug fixes since 3.6.3, including one security-related fix for -a vulnerability that affects NetHack versions 3.6.0, 3.6.1, 3.6.2, and 3.6.3. +NetHack 3.6.5 is the official release of NetHack that follows NetHack 3.6.4 +and contains all bug fixes since 3.6.4, including some fixes for exploitable +security-related vulnerabilities that affected NetHack versions between 3.6.0 +and 3.6.4. -The file doc/fixes36.4 in the source distribution has a full list of fixes. The +The file doc/fixes36.5 in the source distribution has a full list of fixes. The text in there was written for the development team's own use and is provided "as is", so please do not ask us to further explain the entries in that file. Some entries might be considered "spoilers", particularly in the "new features" @@ -17,28 +18,22 @@ section. Below you will find some other general notes that were not considered spoilers: - * fix potential buffer overflow when parsing run-time configuration file - * GDBPATH and GREPPATH from sysconf or -D... on compilation command line were - * being processed even if PANICTRACE was disabled but only being freed - * at end of game when that was enabled - * fix the article used in the message when your steed encounters a polymorph - * trap - * allow teleporting onto the vibrating square - * message "your knapsack can't accomodate any more items" when picking stuff - * up or removing such from container was inaccurate if there was some - * gold pending; vary the message rather than add more convoluted pickup - * code - * dozen-ish assorted spelling/typo fixes in messages and source comments - * wizard mode wishing for terrain would leave it unmapped if done while blind - * wizard mode terrain wish could leave hero in water (severe vision limits) - * or in lava (trapped, sinking) which wasn't there any more - * flying hero can go down (via '>') holes or trap doors instead of escaping - * trap - * polymorphed hero hiding on the ceiling can now use '>' to unhide instead of - * being told "you can't go down here" - * fix compilation on platforms that split the ncurses and tinfo libraries - * Windows: allow all game files to be on a portable device via the sysconf - * option 'portable_device_paths' +FIXME: Update depending on whether cherry-picks are included or not +-- start cherry-pick entries + * fix accessing mons[-1] when trying to gate in a non-valid demon + * fix accessing mons[-1] when monster figures out if a tin cures stoning + * walking out of tethered-to-buried-object trap condition was supposed to + * reinstate punishment but wasn't finding the buried iron ball because + * the trap condition was cleared first to indicate escape; result was + * attached chain that got dragged around but had no ball attached +--- end cherry-pick entries + * have string_for_opt() return empty_optstr on failure + * ensure existing callers of string_for_opt() check return value before using it + * fix potential buffer overflow in add_menu_coloring()0 + * fix potential buffer overflow in sym_val() + * fix potential buffer overflow in pline(), raw_printf(), and config_error_add() + * Windows: incldues a fix from a 3.6.4 post-release update where + * OPTIONS=map_mode:fit_to_screen could cause a game start failure - - - - - - - - - - - diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 47d4f84c1..21589e6a9 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -24,7 +24,7 @@ .ds vr "NetHack 3.6 .ds f0 "\*(vr .ds f1 -.ds f2 "December 18, 2019 +.ds f2 "January 14, 2020 . .\" A note on some special characters: .\" \(lq = left double quote diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index d90873480..5a2d468f5 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -45,7 +45,7 @@ %.au \author{Original version - Eric S. Raymond\\ (Edited and expanded for 3.6 by Mike Stephenson and others)} -\date{December 18, 2019} +\date{January 14, 2020} \maketitle diff --git a/include/global.h b/include/global.h index 5c02491c3..a2b70d258 100644 --- a/include/global.h +++ b/include/global.h @@ -19,7 +19,7 @@ /* * Development status of this NetHack version. */ -#define NH_DEVEL_STATUS NH_STATUS_POSTRELEASE +#define NH_DEVEL_STATUS NH_STATUS_RELEASED #ifndef DEBUG /* allow tool chains to define without causing warnings */ #define DEBUG diff --git a/include/patchlevel.h b/include/patchlevel.h index b2188ab09..46e42f800 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -9,14 +9,14 @@ /* * PATCHLEVEL is updated for each release. */ -#define PATCHLEVEL 4 +#define PATCHLEVEL 5 /* * Incrementing EDITLEVEL can be used to force invalidation of old bones * and save files. */ #define EDITLEVEL 0 -#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2019" +#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2020" #define COPYRIGHT_BANNER_B \ " By Stichting Mathematisch Centrum and M. Stephenson." /* COPYRIGHT_BANNER_C is generated by makedefs into date.h */ @@ -36,6 +36,26 @@ /****************************************************************************/ /* Version 3.6.x */ +/* Patch 5, January ??, 2020 + * + * FIXME: update entries depending on whether the cherry-picks are included + * -- start cherry-pick entries + * fix accessing mons[-1] when trying to gate in a non-valid demon + * fix accessing mons[-1] when monster figures out if a tin cures stoning + * walking out of tethered-to-buried-object trap condition was supposed to + * reinstate punishment but wasn't finding the buried iron ball because + * the trap condition was cleared first to indicate escape; result was + * attached chain that got dragged around but had no ball attached + * -- end cherry-pick entries + * have string_for_opt() return empty_optstr on failure + * ensure existing callers of string_for_opt() check return value before using it + * fix potential buffer overflow in add_menu_coloring()0 + * fix potential buffer overflow in sym_val() + * fix potential buffer overflow in pline(), raw_printf(), and config_error_add() + * Windows: incldues a fix from a 3.6.4 post-release update where + * OPTIONS=map_mode:fit_to_screen could cause a game start failure + */ + /* Patch 4, December 18, 2019 * * fix potential buffer overflow when parsing run-time configuration file diff --git a/src/windows.c b/src/windows.c index 974479187..5fae44db3 100644 --- a/src/windows.c +++ b/src/windows.c @@ -1157,7 +1157,7 @@ boolean fullsubs; /* True -> full substitution for file name, False -> else Strcpy(tmpbuf, "{current date+time}"); break; - case 'v': /* version, eg. "3.6.4-0" */ + case 'v': /* version, eg. "3.6.5-0" */ Sprintf(tmpbuf, "%s", version_string(verbuf)); break; case 'u': /* UID */ diff --git a/sys/amiga/.gitattributes b/sys/amiga/.gitattributes index f969b5ebc..446704d25 100644 --- a/sys/amiga/.gitattributes +++ b/sys/amiga/.gitattributes @@ -1,2 +1,2 @@ *.p NHSUBST -* NH_filestag=(file%s_for_Amiga_versions_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_Amiga_versions_-_untested_for_3.6.5) diff --git a/sys/atari/.gitattributes b/sys/atari/.gitattributes index ff75d0637..1e69c8203 100644 --- a/sys/atari/.gitattributes +++ b/sys/atari/.gitattributes @@ -1 +1 @@ -* NH_filestag=(file%s_for_Atari_version_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_Atari_version_-_untested_for_3.6.5) diff --git a/sys/be/.gitattributes b/sys/be/.gitattributes index 76b400189..cfd3b0752 100644 --- a/sys/be/.gitattributes +++ b/sys/be/.gitattributes @@ -1 +1 @@ -* NH_filestag=(file%s_for_BeOS_version_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_BeOS_version_-_untested_for_3.6.5) diff --git a/sys/msdos/.gitattributes b/sys/msdos/.gitattributes index a0b35794c..6495a95ad 100644 --- a/sys/msdos/.gitattributes +++ b/sys/msdos/.gitattributes @@ -4,6 +4,6 @@ Makefile.* NHSUBST Install.* NHSUBST moveinit.pat NH_header=no vesa.h NH_header=no -* NH_filestag=(file%s_for_MSDOS_version_-_tested_for_3.6.4_via_partial_cross-compile_only) +* NH_filestag=(file%s_for_MSDOS_version) nhico.uu NH_filestag=(file%s_for_running_MSDOS_binary_under_Windows) nhpif.uu NH_filestag=>nhico.uu diff --git a/sys/os2/.gitattributes b/sys/os2/.gitattributes index d3d1c307d..79916bd77 100644 --- a/sys/os2/.gitattributes +++ b/sys/os2/.gitattributes @@ -1,2 +1,2 @@ Makefile.* NHSUBST -* NH_filestag=(file%s_for_OS/2_version_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_OS/2_version_-_untested_for_3.6.5) diff --git a/sys/share/.gitattributes b/sys/share/.gitattributes index 271c3c59f..6a04d25b3 100644 --- a/sys/share/.gitattributes +++ b/sys/share/.gitattributes @@ -5,16 +5,16 @@ dgn_comp.h NH_header=no lev_comp.h NH_header=no Makefile.lib NH_header=no -Makefile.lib NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.4) -#termcap.uu NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.4) +Makefile.lib NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.5) +#termcap.uu NH_filestag=(file%s_for_MSDOS_and_OS/2_versions_-_untested_for_3.6.5) termcap.uu NH_filestag=>Makefile.lib -pcmain.c NH_filestag=(file_for_MSDOS,_OS/2,_Amiga,_and_Atari_versions_-_untested_for_3.6.4) +pcmain.c NH_filestag=(file_for_MSDOS,_OS/2,_Amiga,_and_Atari_versions_-_untested_for_3.6.5) -pcsys.c NH_filestag=(file%s_for_MSDOS,_OS/2_and_Atari_versions_-_tested_on_MSDOS_for_3.6.4_via_partial_cross-compile_only) +pcsys.c NH_filestag=(file%s_for_MSDOS,_OS/2_and_Atari_versions_-_tested_on_MSDOS_for_3.6.5_via_partial_cross-compile_only) pcunix.c NH_filestag=>pcsys.c -NetHack.cnf NH_filestag=(file_for_MSDOS,_OS/2,_and_Atari_versions_-_untested_for_3.6.4) +NetHack.cnf NH_filestag=(file_for_MSDOS,_OS/2,_and_Atari_versions_-_untested_for_3.6.5) pctty.c NH_filestag=>NetHack.cnf ioctl.c NH_filestag=(file%s_for_UNIX_and_Be_versions) diff --git a/sys/unix/README.linux b/sys/unix/README.linux index e96be77cd..222216ec6 100644 --- a/sys/unix/README.linux +++ b/sys/unix/README.linux @@ -26,8 +26,8 @@ home directory you might perform these steps. If you have old record and logfile entries from a previous NetHack version, you might want to save copies before they get overwritten by the new empty -files; old saved games and bones files from 3.6.0 through to 3.6.3 should -work with 3.6.4 but even older saved games and bones files from 3.4.3 will +files; old saved games and bones files from 3.6.0 through to 3.6.4 should +work with 3.6.5 but even older saved games and bones files from 3.4.3 will not. If you are installing from the RPM, there is no need to save the old record and logfile; they are automatically preserved. diff --git a/sys/unix/sysconf b/sys/unix/sysconf index b8bfbcb9a..9b2075dbc 100644 --- a/sys/unix/sysconf +++ b/sys/unix/sysconf @@ -95,7 +95,7 @@ MAXPLAYERS=10 # Only available if NetHack was compiled with DUMPLOG # Allows following placeholders: # %% literal '%' -# %v version (eg. "3.6.4-0") +# %v version (eg. "3.6.5-0") # %u game UID # %t game start time, UNIX timestamp format # %T current time, UNIX timestamp format diff --git a/sys/vms/Install.vms b/sys/vms/Install.vms index 37418f261..a7eb51bf1 100644 --- a/sys/vms/Install.vms +++ b/sys/vms/Install.vms @@ -1,4 +1,4 @@ - Instructions for Building and Installing NetHack 3.6.4 + Instructions for Building and Installing NetHack 3.6.5 on a VMS (aka OpenVMS) system ========================================= @@ -146,7 +146,7 @@ Notes: 0. Version 3.5.x was never publicly released. 1. Save files and bones files from 3.4.x and earlier versions - will not work with 3.6.4, but save files and bones file from 3.6.0, + will not work with 3.6.5, but save files and bones file from 3.6.0, through 3.6.4 should work. The scoreboard file (RECORD) from 3.6.x or 3.4.x or 3.3.x will work. diff --git a/sys/vms/Makefile.src b/sys/vms/Makefile.src index 566f129d4..6da9100de 100644 --- a/sys/vms/Makefile.src +++ b/sys/vms/Makefile.src @@ -133,7 +133,7 @@ RANDOBJ = isaac64.obj,random.obj # Other things that have to be reconfigured are in vmsconf.h, # and config.h -VERSION = 3.6.4 +VERSION = 3.6.5 MAKEDEFS = $(UTL)makedefs.exe; diff --git a/sys/vms/vmsbuild.com b/sys/vms/vmsbuild.com index 50dd41fc2..25ba46e31 100755 --- a/sys/vms/vmsbuild.com +++ b/sys/vms/vmsbuild.com @@ -1,5 +1,5 @@ $ ! vms/vmsbuild.com -- compile and link NetHack 3.6.* [pr] -$ version_number = "3.6.4" +$ version_number = "3.6.5" $ ! $NHDT-Date: 1557701518 2019/05/12 22:51:58 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.23 $ $ ! Copyright (c) 2018 by Robert Patrick Rankin $ ! NetHack may be freely redistributed. See license for details. diff --git a/sys/wince/.gitattributes b/sys/wince/.gitattributes index 70924b994..5939c3e4c 100644 --- a/sys/wince/.gitattributes +++ b/sys/wince/.gitattributes @@ -1,4 +1,4 @@ *.ce NHSUBST *.mak NHSUBST *.bat NHSUBST -* NH_filestag=(file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.5) diff --git a/sys/wince/ceinc/.gitattributes b/sys/wince/ceinc/.gitattributes index e95fe9840..e22da34ef 100644 --- a/sys/wince/ceinc/.gitattributes +++ b/sys/wince/ceinc/.gitattributes @@ -1 +1 @@ -* NH_filestag=(header_file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.4) +* NH_filestag=(header_file%s_for_Windows_CE_and_PocketPC_-_untested_for_3.6.5) diff --git a/sys/wince/winhack.rc b/sys/wince/winhack.rc index b928c3b04..a844d5b2c 100644 --- a/sys/wince/winhack.rc +++ b/sys/wince/winhack.rc @@ -284,8 +284,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,4,0 - PRODUCTVERSION 3,6,4,0 + FILEVERSION 3,6,5,0 + PRODUCTVERSION 3,6,5,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x9L @@ -300,17 +300,17 @@ BEGIN BEGIN BLOCK "040904b0" BEGIN - VALUE "Comments", "NetHack 3.6.4 for Windows CE\0" + VALUE "Comments", "NetHack 3.6.5 for Windows CE\0" VALUE "CompanyName", " \0" VALUE "FileDescription", "nethackm\0" - VALUE "FileVersion", "3, 6, 4, 0\0" + VALUE "FileVersion", "3, 6, 5, 0\0" VALUE "InternalName", "nethackm\0" - VALUE "LegalCopyright", "Copyright © 1985-2019\0" + VALUE "LegalCopyright", "Copyright © 1985-2020\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "nethackm.exe\0" VALUE "PrivateBuild", "090914\0" VALUE "ProductName", "NetHack\0" - VALUE "ProductVersion", "3, 6, 4, 0\0" + VALUE "ProductVersion", "3, 6, 5, 0\0" VALUE "SpecialBuild", "\0" END END diff --git a/sys/wince/winhcksp.rc b/sys/wince/winhcksp.rc index 3e5373a2f..377c8e6da 100644 --- a/sys/wince/winhcksp.rc +++ b/sys/wince/winhcksp.rc @@ -260,8 +260,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,4,0 - PRODUCTVERSION 3,6,4,0 + FILEVERSION 3,6,5,0 + PRODUCTVERSION 3,6,5,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x9L @@ -276,17 +276,17 @@ BEGIN BEGIN BLOCK "040904b0" BEGIN - VALUE "Comments", "NetHack 3.6.4 for Smartphone 2002\0" + VALUE "Comments", "NetHack 3.6.5 for Smartphone 2002\0" VALUE "CompanyName", " \0" VALUE "FileDescription", "nethackm\0" - VALUE "FileVersion", "3, 6, 4, 0\0" + VALUE "FileVersion", "3, 6, 5, 0\0" VALUE "InternalName", "nethackm\0" - VALUE "LegalCopyright", "Copyright © 1985-2019\0" + VALUE "LegalCopyright", "Copyright © 1985-2020\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "nethackm.exe\0" VALUE "PrivateBuild", "090914\0" VALUE "ProductName", "NetHack For Smartphone\0" - VALUE "ProductVersion", "3, 6, 4, 0\0" + VALUE "ProductVersion", "3, 6, 5, 0\0" VALUE "SpecialBuild", "\0" END END diff --git a/sys/winnt/Install.nt b/sys/winnt/Install.nt index 7ef199034..2c50a4ed2 100644 --- a/sys/winnt/Install.nt +++ b/sys/winnt/Install.nt @@ -16,7 +16,7 @@ contributed the port. Alex Kompel, Dion Nicolaas, Yitzhak Sapir, Derek S. Ray, Michael Allison, Pasi Kallinen, Bart House, and Janet Walz contributed to the maintainance -of the tty and graphical windows versions of NetHack 3.6.4. +of the tty and graphical windows versions of NetHack 3.6.5. You can build a TTY version of NetHack and a Windows Graphical version. You can use one of the following build environments: @@ -151,7 +151,7 @@ a 32-bit x86 version, or a 64-bit x64 version. The default Makefile is set up for a 32-bit x86 version, but that's only because it will run on the most number of existing Windows environments. -NetHack's save files and bones files in the 3.6.4 release have not yet +NetHack's save files and bones files in the 3.6.5 release have not yet evolved enough to allow them to interchange between the 32-bit version and the 64-bit version (or between different platforms). Hopefully that will change in an upcoming release. @@ -164,7 +164,7 @@ I. Dispelling the Myths: We have provided a Makefile for each of the following compilers: - o Microsoft Visual Studio 2015 or 2017 C++ Compiler + o Microsoft Visual Studio 2017 or 2019 C++ Compiler The Community Editions are fine and available at no cost o MinGW 2.0 (with GCC 3.2) diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index a1eead86f..7ba633dc0 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -139,7 +139,7 @@ SKIP_NETHACKW=Y #============================================================================== # The version of the game this Makefile was designed for -NETHACK_VERSION="3.6.4" +NETHACK_VERSION="3.6.5" # A brief version for use in macros NHV1=$(subst .,,$(NETHACK_VERSION)) diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 2ecca426b..6421a708d 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -93,7 +93,7 @@ DEBUGINFO = Y #============================================================================== # # The version of the game this Makefile was designed for -NETHACK_VERSION="3.6.4" +NETHACK_VERSION="3.6.5" # A brief version for use in macros NHV=$(NETHACK_VERSION:.=) diff --git a/sys/winnt/nethack.def b/sys/winnt/nethack.def index 67f372a46..91adc4ec0 100644 --- a/sys/winnt/nethack.def +++ b/sys/winnt/nethack.def @@ -1,5 +1,5 @@ NAME NETHACK -DESCRIPTION 'NetHack 3.6.4 for Windows' +DESCRIPTION 'NetHack 3.6.5 for Windows' EXETYPE WINDOWS STUB 'WINSTUB.EXE' CODE PRELOAD MOVEABLE DISCARDABLE diff --git a/sys/winnt/sysconf.template b/sys/winnt/sysconf.template index e8b70015f..550cadcc6 100644 --- a/sys/winnt/sysconf.template +++ b/sys/winnt/sysconf.template @@ -24,7 +24,7 @@ WIZARDS=* # Only available if NetHack was compiled with DUMPLOG # Allows following placeholders: # %% literal '%' -# %v version (eg. "3.6.4-0") +# %v version (eg. "3.6.5-0") # %u game UID # %t game start time, UNIX timestamp format # %T current time, UNIX timestamp format diff --git a/util/makedefs.c b/util/makedefs.c index 2bb521b70..31d77128a 100644 --- a/util/makedefs.c +++ b/util/makedefs.c @@ -53,7 +53,7 @@ #endif #if defined(UNIX) && !defined(LINT) && !defined(GCC_WARN) -static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2019/12/17"; +static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2020/01/18"; #endif /* names of files to be generated */ diff --git a/win/gem/.gitattributes b/win/gem/.gitattributes index 3c4d1eef1..f39d64117 100644 --- a/win/gem/.gitattributes +++ b/win/gem/.gitattributes @@ -1 +1 @@ -* NH_filestag=(file%s_for_GEM_versions_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_GEM_versions_-_untested_for_3.6.5) diff --git a/win/gnome/.gitattributes b/win/gnome/.gitattributes index 6f8e9f364..11c09ee8a 100644 --- a/win/gnome/.gitattributes +++ b/win/gnome/.gitattributes @@ -1 +1 @@ -* NH_filestag=(file%s_for_GNOME_versions_-_untested_for_3.6.4) +* NH_filestag=(file%s_for_GNOME_versions_-_untested_for_3.6.5) diff --git a/win/win32/NetHackW.rc b/win/win32/NetHackW.rc index a98f6f021..95473331f 100644 --- a/win/win32/NetHackW.rc +++ b/win/win32/NetHackW.rc @@ -320,8 +320,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,4,0 - PRODUCTVERSION 3,6,4,0 + FILEVERSION 3,6,5,0 + PRODUCTVERSION 3,6,5,0 FILEFLAGSMASK 0x1fL #ifdef _DEBUG FILEFLAGS 0x9L @@ -337,13 +337,13 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "NetHack for Windows - Graphical Interface" - VALUE "FileVersion", "3.6.4" + VALUE "FileVersion", "3.6.5" VALUE "InternalName", "NetHackW" - VALUE "LegalCopyright", "Copyright (C) 1985 - 2019. By Stichting Mathematisch Centrum and M. Stephenson. See license for details." + VALUE "LegalCopyright", "Copyright (C) 1985 - 2020. By Stichting Mathematisch Centrum and M. Stephenson. See license for details." VALUE "OriginalFilename", "NetHackW.exe" VALUE "PrivateBuild", "140606" VALUE "ProductName", "NetHack" - VALUE "ProductVersion", "3.6.4" + VALUE "ProductVersion", "3.6.5" END END BLOCK "VarFileInfo" diff --git a/win/win32/mswproc.c b/win/win32/mswproc.c index f117fc3ce..d97000389 100644 --- a/win/win32/mswproc.c +++ b/win/win32/mswproc.c @@ -2316,7 +2316,7 @@ logDebug(const char *fmt, ...) /* Reading and writing settings from the registry. */ #define CATEGORYKEY "Software" #define COMPANYKEY "NetHack" -#define PRODUCTKEY "NetHack 3.6.4" +#define PRODUCTKEY "NetHack 3.6.5" #define SETTINGSKEY "Settings" #define MAINSHOWSTATEKEY "MainShowState" #define MAINMINXKEY "MainMinX" diff --git a/win/win32/nethack.rc b/win/win32/nethack.rc index 3f30ae2c4..d961f3295 100644 --- a/win/win32/nethack.rc +++ b/win/win32/nethack.rc @@ -60,8 +60,8 @@ IDI_ICON1 ICON "nethack.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,4,0 - PRODUCTVERSION 3,6,4,0 + FILEVERSION 3,6,5,0 + PRODUCTVERSION 3,6,5,0 FILEFLAGSMASK 0x1fL #ifdef _DEBUG FILEFLAGS 0x9L @@ -77,12 +77,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "NetHack for Windows - TTY Interface" - VALUE "FileVersion", "3.6.4" + VALUE "FileVersion", "3.6.5" VALUE "InternalName", "NetHack" - VALUE "LegalCopyright", "Copyright (C) 1985 - 2019. By Stichting Mathematisch Centrum and M. Stephenson. See license for details." + VALUE "LegalCopyright", "Copyright (C) 1985 - 2020. By Stichting Mathematisch Centrum and M. Stephenson. See license for details." VALUE "OriginalFilename", "NetHack.exe" VALUE "ProductName", "NetHack" - VALUE "ProductVersion", "3.6.4" + VALUE "ProductVersion", "3.6.5" END END BLOCK "VarFileInfo" From 41137101a4c6d633ebcee97bd4d467e574e0c674 Mon Sep 17 00:00:00 2001 From: nhmall Date: Tue, 14 Jan 2020 11:44:02 -0500 Subject: [PATCH 02/12] documentation updates --- dat/history | 3 +++ doc/Guidebook.mn | 3 +++ doc/Guidebook.tex | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/dat/history b/dat/history index 9e5979862..5c9f44a8e 100644 --- a/dat/history +++ b/dat/history @@ -226,6 +226,9 @@ fixes to NetHack 3.6.2. NetHack 3.6.4 was released on December 18, 2019 containing a security fix and a few bug fixes. +NetHack 3.6.5 was released in January, 2020 containing some security fixes +and a small number of bug fixes. + The official NetHack web site is maintained by Ken Lorber at http://www.nethack.org/. diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 21589e6a9..8c1e67129 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -5161,6 +5161,9 @@ fixes to NetHack 3.6.2. NetHack 3.6.4 was released on December 18, 2019 containing a security fix and a few bug fixes. .pg +NetHack 3.6.5 was released in January, 2020 containing some security fixes +and a small number of bug fixes. +.pg The official NetHack web site is maintained by \fBKen Lorber\fP at .UR https://www.nethack.org/ . diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 5a2d468f5..5f8ffa9b1 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -5768,6 +5768,11 @@ fixes to NetHack 3.6.2. NetHack 3.6.4 was released on December 18, 2019 containing a security fix and a few bug fixes. +%.pg +\medskip +NetHack 3.6.5 was released in January, 2020 containing some security fixes +and a small number of bug fixes. + %.pg \medskip \nd The official {\it NetHack\/} web site is maintained by {\it Ken Lorber} at From ed72eb71daa2f62f11b42da1988cd8001199a4a7 Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 03/12] This is cron-daily v1-Jan-14-2020. manpages updated: dgn_comp.txt --- doc/dgn_comp.txt | 402 ++++++++++++++++------------------------------- 1 file changed, 137 insertions(+), 265 deletions(-) diff --git a/doc/dgn_comp.txt b/doc/dgn_comp.txt index 907a4f0a6..8a5ef546d 100644 --- a/doc/dgn_comp.txt +++ b/doc/dgn_comp.txt @@ -1,330 +1,202 @@ - - - -DGN_COMP(6) 1995 DGN_COMP(6) +DGN_COMP(6) Games Manual DGN_COMP(6) NAME - dgn_comp - NetHack dungeon compiler + dgn_comp - NetHack dungeon compiler SYNOPSIS - dgn_comp [ file ] + dgn_comp [ file ] - If no arguments are given, it reads standard input. + If no arguments are given, it reads standard input. DESCRIPTION - Dgn_comp is a dungeon compiler for NetHack version 3.2 and - higher. It takes a description file as an argument and pro- - duces a dungeon "script" that is to be loaded by NetHack at - runtime. + Dgn_comp is a dungeon compiler for NetHack version 3.2 and higher. It + takes a description file as an argument and produces a dungeon "script" + that is to be loaded by NetHack at runtime. - The purpose of this tool is to provide NetHack administra- - tors and implementors with a convenient way to create a cus- - tom dungeon for the game, without having to recompile the - entire world. + The purpose of this tool is to provide NetHack administrators and + implementors with a convenient way to create a custom dungeon for the + game, without having to recompile the entire world. GRAMMAR - DUNGEON: name bonesmarker ( base , rand ) [ %age ] + DUNGEON: name bonesmarker ( base , rand ) [ %age ] - where name is the dungeon name, bonesmarker is a letter for - marking bones files, ( base , rand ) is the number of lev- - els, and %age is its percentage chance of being generated - (if absent, 100% chance). + where name is the dungeon name, bonesmarker is a letter for marking + bones files, ( base , rand ) is the number of levels, and %age is its + percentage chance of being generated (if absent, 100% chance). - DESCRIPTION: tag + DESCRIPTION: tag - where tag is currently one of HELLISH, MAZELIKE, or ROGUE- - LIKE. + where tag is currently one of HELLISH, MAZELIKE, or ROGUELIKE. - ALIGNMENT | LEVALIGN: [ lawful | neutral | chaotic | - unaligned ] + ALIGNMENT | LEVALIGN: [ lawful | neutral | chaotic | unaligned ] - gives the alignment of the dungeon/level (default is - unaligned). + gives the alignment of the dungeon/level (default is unaligned). - ENTRY: level + ENTRY: level - the dungeon entry point. The dungeon connection attaches at - this level of the given dungeon. If the value of level is - negative, the entry level is calculated from the bottom of - the dungeon, with -1 being the last level. If this line is - not present in a dungeon description, the entry level - defaults to 1. + the dungeon entry point. The dungeon connection attaches at this level + of the given dungeon. If the value of level is negative, the entry + level is calculated from the bottom of the dungeon, with -1 being the + last level. If this line is not present in a dungeon description, the + entry level defaults to 1. - PROTOFILE: name + PROTOFILE: name - the prototypical name for dungeon level files in this - dungeon. For example, the PROTOFILE name for the dungeon - Vlad's Tower is tower. + the prototypical name for dungeon level files in this dungeon. For + example, the PROTOFILE name for the dungeon Vlad's Tower is tower. + LEVEL: name bonesmarker @ ( base , rand ) [ %age ] + where name is the level name, bonesmarker is a letter for marking bones + files, ( base , rand ) is the location and %age is the generation per- + centage, as above. -Dec Last change: 12 1 + RNDLEVEL: name bonesmarker @ ( base , rand ) [ %age ] rndlevs + where name is the level name, bonesmarker is a letter for marking bones + files, ( base , rand ) is the location, %age is the generation percent- + age, as above, and rndlevs is the number of similar levels available to + choose from. + CHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [ %age ] + where name is the level name, bonesmarker is a letter for marking bones + files, prev_name is the name of a level defined previously, ( base , + rand ) is the offset from the level being chained from, and %age is the + generation percentage. + RNDCHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [ %age ] + rndlevs + where name is the level name, bonesmarker is a letter for marking bones + files, prev_name is the name of a level defined previously, ( base , + rand ) is the offset from the level being chained from, %age is the + generation percentage, and rndlevs is the number of similar levels + available to choose from. -DGN_COMP(6) 1995 DGN_COMP(6) + LEVELDESC: type + where type is the level type, (see DESCRIPTION, above). The type is + used to override any pre-set value used to describe the entire dungeon, + for this level only. + BRANCH: name @ ( base , rand ) [ stair | no_up | no_down | portal ] [ + up | down ] - LEVEL: name bonesmarker @ ( base , rand ) [ %age ] + where name is the name of the dungeon to branch to, and ( base , rand ) + is the location of the branch. The last two optional arguments are the + branch type and branch direction. The type of a branch can be a two- + way stair connection, a one-way stair connection, or a magic portal. A + one-way stair is described by the types no_up and no_down which specify + which stair direction is missing. The default branch type is stair. + The direction for a stair can be either up or down; direction is not + applicable to portals. The default direction is down. - where name is the level name, bonesmarker is a letter for - marking bones files, ( base , rand ) is the location and - %age is the generation percentage, as above. + CHAINBRANCH: name prev_name + ( base , rand ) [ stair | no_up | no_down + | portal ] [ up | down ] - RNDLEVEL: name bonesmarker @ ( base , rand ) [ %age ] - rndlevs - - where name is the level name, bonesmarker is a letter for - marking bones files, ( base , rand ) is the location, %age - is the generation percentage, as above, and rndlevs is the - number of similar levels available to choose from. - - CHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [ - %age ] - - where name is the level name, bonesmarker is a letter for - marking bones files, prev_name is the name of a level - defined previously, ( base , rand ) is the offset from the - level being chained from, and %age is the generation percen- - tage. - - RNDCHAINLEVEL: name bonesmarker prev_name + ( base , rand ) - [ %age ] rndlevs - - where name is the level name, bonesmarker is a letter for - marking bones files, prev_name is the name of a level - defined previously, ( base , rand ) is the offset from the - level being chained from, %age is the generation percentage, - and rndlevs is the number of similar levels available to - choose from. - - LEVELDESC: type - - where type is the level type, (see DESCRIPTION, above). The - type is used to override any pre-set value used to describe - the entire dungeon, for this level only. - - BRANCH: name @ ( base , rand ) [ stair | no_up | no_down | - portal ] [ up | down ] - - where name is the name of the dungeon to branch to, and ( - base , rand ) is the location of the branch. The last two - optional arguments are the branch type and branch direction. - The type of a branch can be a two-way stair connection, a - one-way stair connection, or a magic portal. A one-way - stair is described by the types no_up and no_down which - specify which stair direction is missing. The default - branch type is stair. The direction for a stair can be - either up or down; direction is not applicable to portals. - The default direction is down. - - - -Dec Last change: 12 2 - - - - - - -DGN_COMP(6) 1995 DGN_COMP(6) - - - - CHAINBRANCH: name prev_name + ( base , rand ) [ stair | - no_up | no_down | portal ] [ up | down ] - - where name is the name of the dungeon to branch to, - prev_name is the name of a previously defined level and ( - base , rand ) is the offset from the level being chained - from. The optional branch type and direction are the same - as described above. + where name is the name of the dungeon to branch to, prev_name is the + name of a previously defined level and ( base , rand ) is the offset + from the level being chained from. The optional branch type and direc- + tion are the same as described above. GENERIC RULES - Each dungeon must have a unique bonesmarker , and each spe- - cial level must have a bonesmarker unique within its dungeon - (letters may be reused in different dungeons). If the - bonesmarker has the special value "none", no bones files - will be created for that level or dungeon. + Each dungeon must have a unique bonesmarker , and each special level + must have a bonesmarker unique within its dungeon (letters may be + reused in different dungeons). If the bonesmarker has the special + value "none", no bones files will be created for that level or dungeon. - The value base may be in the range of 1 to MAXLEVEL (as - defined in global.h ). + The value base may be in the range of 1 to MAXLEVEL (as defined in + global.h ). - The value rand may be in the range of -1 to MAXLEVEL. + The value rand may be in the range of -1 to MAXLEVEL. - If rand is -1 it will be replaced with the value - (num_dunlevs(dungeon) - base) during the load process (ie. - from here to the end of the dungeon). + If rand is -1 it will be replaced with the value (num_dunlevs(dungeon) + - base) during the load process (ie. from here to the end of the dun- + geon). - If rand is 0 the level is located absolutely at base. + If rand is 0 the level is located absolutely at base. - Branches don't have a probability. Dungeons do. If a - dungeon fails to be generated during load, all its levels - and branches are skipped. + Branches don't have a probability. Dungeons do. If a dungeon fails to + be generated during load, all its levels and branches are skipped. - No level or branch may be chained from a level with a per- - centage generation probability. This is to prevent non- - resolution during the load. In addition, no branch may be - made from a dungeon with a percentage generation probability - for the same reason. + No level or branch may be chained from a level with a percentage gener- + ation probability. This is to prevent non-resolution during the load. + In addition, no branch may be made from a dungeon with a percentage + generation probability for the same reason. - As a general rule using the dungeon compiler: + As a general rule using the dungeon compiler: - If a dungeon has a protofile name associated with it (eg. - tower) that file will be used. + If a dungeon has a protofile name associated with it (eg. tower) that + file will be used. - If a special level is present, it will override the above - rule and the appropriate file will be loaded. - - If neither of the above are present, the standard generator - will take over and make a "normal" level. - - A level alignment, if present, will override the alignment - of the dungeon that it exists within. - - - - - -Dec Last change: 12 3 - - - - - - -DGN_COMP(6) 1995 DGN_COMP(6) + If a special level is present, it will override the above rule and the + appropriate file will be loaded. + If neither of the above are present, the standard generator will take + over and make a "normal" level. + A level alignment, if present, will override the alignment of the dun- + geon that it exists within. EXAMPLE - Here is the current syntax of the dungeon compiler's - "language": + Here is the current syntax of the dungeon compiler's "language": - # - # The dungeon description file for the "standard" original - # 3.0 NetHack. - # - DUNGEON: "The Dungeons of Doom" "D" (25, 5) - LEVEL: "rogue" "none" @ (15, 4) - LEVEL: "oracle" "none" @ (5, 7) - LEVEL: "bigroom" "B" @ (12, 3) 15 - LEVEL: "medusa" "none" @ (20, 5) - CHAINLEVEL: "castle" "medusa" + (1, 4) - CHAINBRANCH: "Hell" "castle" + (0, 0) no_down - BRANCH: "The Astral Plane" @ (1, 0) no_down up + # + # The dungeon description file for the "standard" original + # 3.0 NetHack. + # + DUNGEON: "The Dungeons of Doom" "D" (25, 5) + LEVEL: "rogue" "none" @ (15, 4) + LEVEL: "oracle" "none" @ (5, 7) + LEVEL: "bigroom" "B" @ (12, 3) 15 + LEVEL: "medusa" "none" @ (20, 5) + CHAINLEVEL: "castle" "medusa" + (1, 4) + CHAINBRANCH: "Hell" "castle" + (0, 0) no_down + BRANCH: "The Astral Plane" @ (1, 0) no_down up - DUNGEON: "Hell" "H" (25, 5) - DESCRIPTION: mazelike - DESCRIPTION: hellish - BRANCH: "Vlad's Tower" @ (13, 5) up - LEVEL: "wizard" "none" @ (15, 10) - LEVEL: "fakewiz" "A" @ (5, 5) - LEVEL: "fakewiz" "B" @ (10, 5) - LEVEL: "fakewiz" "C" @ (15, 5) - LEVEL: "fakewiz" "D" @ (20, 5) - LEVEL: "fakewiz" "E" @ (25, 5) + DUNGEON: "Hell" "H" (25, 5) + DESCRIPTION: mazelike + DESCRIPTION: hellish + BRANCH: "Vlad's Tower" @ (13, 5) up + LEVEL: "wizard" "none" @ (15, 10) + LEVEL: "fakewiz" "A" @ (5, 5) + LEVEL: "fakewiz" "B" @ (10, 5) + LEVEL: "fakewiz" "C" @ (15, 5) + LEVEL: "fakewiz" "D" @ (20, 5) + LEVEL: "fakewiz" "E" @ (25, 5) - DUNGEON: "Vlad's Tower" "T" (3, 0) - PROTOFILE: "tower" - DESCRIPTION: mazelike - ENTRY: -1 + DUNGEON: "Vlad's Tower" "T" (3, 0) + PROTOFILE: "tower" + DESCRIPTION: mazelike + ENTRY: -1 - DUNGEON: "The Astral Plane" "A" (1, 0) - DESCRIPTION: mazelike - PROTOFILE: "endgame" + DUNGEON: "The Astral Plane" "A" (1, 0) + DESCRIPTION: mazelike + PROTOFILE: "endgame" - NOTES: - Lines beginning with '#' are considered comments. - A special level must be explicitly aligned. The alignment - of the dungeon it is in only applies to non-special levels - within that dungeon. + NOTES: + Lines beginning with '#' are considered comments. + A special level must be explicitly aligned. The alignment of the dun- + geon it is in only applies to non-special levels within that dungeon. AUTHOR - M. Stephenson (from the level compiler by Jean-Christophe - Collet). + M. Stephenson (from the level compiler by Jean-Christophe Collet). SEE ALSO - lev_comp(6), nethack(6) - - - - - -Dec Last change: 12 4 - - - - - - -DGN_COMP(6) 1995 DGN_COMP(6) - - + lev_comp(6), nethack(6) BUGS - Probably infinite. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Dec Last change: 12 5 + Probably infinite. + +COPYRIGHT + This file is Copyright (C) Kenneth Lorber and was last modified + 2018/04/25 (version NetHack-3.6.0:1.6). NetHack may be freely redis- + tributed. See license for details. +NETHACK 25 May 2015 DGN_COMP(6) From e44e05df59ff838b88f532cf72a5ddffd7257c0e Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 04/12] This is cron-daily v1-Jan-14-2020. manpages updated: dlb.txt --- doc/dlb.txt | 144 +++++++++++++++------------------------------------- 1 file changed, 42 insertions(+), 102 deletions(-) diff --git a/doc/dlb.txt b/doc/dlb.txt index afc09c2d0..7fbd931f5 100644 --- a/doc/dlb.txt +++ b/doc/dlb.txt @@ -1,132 +1,72 @@ - - - -DLB(6) 1993 DLB(6) +DLB(6) Games Manual DLB(6) NAME - dlb - NetHack data librarian + dlb - NetHack data librarian SYNOPSIS - dlb { xct } [ vfIC ] arguments... [ files... ] + dlb { xct } [ vfIC ] arguments... [ files... ] DESCRIPTION - Dlb is a file archiving tool in the spirit (and tradition) - of tar for NetHack version 3.1 and higher. It is used to - maintain the archive files from which NetHack reads special - level files and other read-only information. Note that like - tar the command and option specifiers are specified as a - continuous string and are followed by any arguments required - in the same order as the option specifiers. + Dlb is a file archiving tool in the spirit (and tradition) of tar for + NetHack version 3.1 and higher. It is used to maintain the archive + files from which NetHack reads special level files and other read-only + information. Note that like tar the command and option specifiers are + specified as a continuous string and are followed by any arguments + required in the same order as the option specifiers. - This facility is optional and may be excluded during NetHack - configuration. + ^?ALLDOCS This facility is optional and may be excluded during NetHack + configuration. ^: ^?DLB This facility is optional but is included in + this NetHack configuration. ^: This facility is optional and was + excluded from this NetHack configuration. ^. ^. COMMANDS - The x command causes dlb to extract the contents of the - archive into the current directory. + The x command causes dlb to extract the contents of the archive into + the current directory. - The c command causes dlb to create a new archive from files - in the current directory. + The c command causes dlb to create a new archive from files in the cur- + rent directory. - The t command lists the files in the archive. + The t command lists the files in the archive. OPTIONS AND ARGUMENTS - v verbose output + v verbose output - f archive specify the archive. Default if f not specified - is LIBFILE (usually the nhdat file in the playground). + f archive specify the archive. Default if f not specified is LIBFILE + (usually the nhdat file in the playground). - I lfile specify the file containing the list of files to - put in to or extract from the archive if no files are listed - on the command line. Default for archive creation if no - files are listed is LIBLISTFILE. + I lfile specify the file containing the list of files to put in to + or extract from the archive if no files are listed on the command line. + Default for archive creation if no files are listed is LIBLISTFILE. - C dir change directory. Changes directory before try- - ing to read any files (including the archive and the lfile). + C dir change directory. Changes directory before trying to read + any files (including the archive and the lfile). EXAMPLES - Create the default archive from the default file list: - dlb c + Create the default archive from the default file list: + dlb c - List the contents of the archive 'foo': - dlb tf foo + List the contents of the archive 'foo': + dlb tf foo AUTHOR - Kenneth Lorber - - - - - -Oct Last change: 28 1 - - - - - - -DLB(6) 1993 DLB(6) - - + Kenneth Lorber SEE ALSO - nethack(6), tar(1) + nethack(6), tar(1) BUGS - Not a good tar emulation; - does not mean stdin or stdout. - Should include an optional compression facility. Not all - read-only files for NetHack can be read out of an archive; - examining the source is the only way to know which files can - be. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Oct Last change: 28 2 + Not a good tar emulation; - does not mean stdin or stdout. Should + include an optional compression facility. Not all read-only files for + NetHack can be read out of an archive; examining the source is the only + way to know which files can be. + +COPYRIGHT + This file is Copyright (C) Kenneth Lorber and was last modified + 2018/04/25 (version NetHack-3.6.0:1.7). NetHack may be freely redis- + tributed. See license for details. +NETHACK 25 May 2015 DLB(6) From 36736f2cf7483f25af9d2d797aaa760df91607ff Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 05/12] This is cron-daily v1-Jan-14-2020. manpages updated: lev_comp.txt --- doc/lev_comp.txt | 1117 ++++++++++++++++++++-------------------------- 1 file changed, 477 insertions(+), 640 deletions(-) diff --git a/doc/lev_comp.txt b/doc/lev_comp.txt index 4a28fcea6..d6745409e 100644 --- a/doc/lev_comp.txt +++ b/doc/lev_comp.txt @@ -1,726 +1,563 @@ - - - -LEV_COMP(6) 1996 LEV_COMP(6) +LEV_COMP(6) Games Manual LEV_COMP(6) NAME - lev_comp - NetHack special levels compiler + lev_comp - NetHack special levels compiler SYNOPSIS - lev_comp [ -w ] [ files ] + lev_comp [ -w ] [ files ] - If no arguments are given, it reads standard input. + If no arguments are given, it reads standard input. DESCRIPTION - Lev_comp is a special level compiler for NetHack version 3.2 - and higher. It takes description files as arguments and - produces level files that can be loaded by NetHack at run- - time. + Lev_comp is a special level compiler for NetHack version 3.2 and + higher. It takes description files as arguments and produces level + files that can be loaded by NetHack at runtime. - The purpose of this tool is to provide NetHack administra- - tors and implementors with a convenient way for adding spe- - cial levels to the game, or modifying existing ones, without - having to recompile the entire world. + The purpose of this tool is to provide NetHack administrators and + implementors with a convenient way for adding special levels to the + game, or modifying existing ones, without having to recompile the + entire world. - The -w option causes lev_comp to perform extra checks on the - level and display extra warnings, however these warnings are - sometimes superfluous, so they are not normally displayed. + The -w option causes lev_comp to perform extra checks on the level and + display extra warnings, however these warnings are sometimes superflu- + ous, so they are not normally displayed. GRAMMAR - file : /* nothing */ - | levels - ; + file : /* nothing */ + | levels + ; - levels : level - | level levels - ; + levels : level + | level levels + ; - level : maze_level - | room_level - ; + level : maze_level + | room_level + ; - maze_level : maze_def flags lev_init messages regions - ; + maze_level : maze_def flags lev_init messages regions + ; - room_level : level_def flags lev_init messages rreg_init rooms corridors_def - ; + room_level : level_def flags lev_init messages rreg_init rooms corridors_def + ; - level_def : LEVEL_ID ':' string - ; + level_def : LEVEL_ID ':' string + ; - lev_init : /* nothing */ - | LEV_INIT_ID ':' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled - ; + lev_init : /* nothing */ + | LEV_INIT_ID ':' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled + ; + + walled : BOOLEAN + | RANDOM_TYPE + ; + + flags : /* nothing */ + | FLAGS_ID ':' flag_list + ; - walled : BOOLEAN - | RANDOM_TYPE + flag_list : FLAG_TYPE ',' flag_list + | FLAG_TYPE + ; + messages : /* nothing */ + | message messages + ; + message : MESSAGE_ID ':' STRING + ; -May Last change: 16 1 + rreg_init : /* nothing */ + | rreg_init init_rreg + ; + init_rreg : RANDOM_OBJECTS_ID ':' object_list + | RANDOM_MONSTERS_ID ':' monster_list + ; + rooms : /* Nothing - dummy room for use with INIT_MAP */ + | roomlist + ; + roomlist : aroom + | aroom roomlist + ; + corridors_def : random_corridors + | corridors + ; + random_corridors: RAND_CORRIDOR_ID + ; -LEV_COMP(6) 1996 LEV_COMP(6) + corridors : /* nothing */ + | corridors corridor + ; + corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec + | CORRIDOR_ID ':' corr_spec ',' INTEGER + ; + corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')' + ; - ; + aroom : room_def room_details + | subroom_def room_details + ; - flags : /* nothing */ - | FLAGS_ID ':' flag_list - ; + subroom_def : SUBROOM_ID ':' room_type ',' light_state ',' subroom_pos ',' room_size ',' string roomfill + ; - flag_list : FLAG_TYPE ',' flag_list - | FLAG_TYPE - ; + room_def : ROOM_ID ':' room_type ',' light_state ',' room_pos ',' room_align ',' room_size roomfill + ; - messages : /* nothing */ - | message messages - ; + roomfill : /* nothing */ + | ',' BOOLEAN + ; - message : MESSAGE_ID ':' STRING - ; + room_pos : '(' INTEGER ',' INTEGER ')' + | RANDOM_TYPE + ; - rreg_init : /* nothing */ - | rreg_init init_rreg - ; + subroom_pos : '(' INTEGER ',' INTEGER ')' + | RANDOM_TYPE + ; - init_rreg : RANDOM_OBJECTS_ID ':' object_list - | RANDOM_MONSTERS_ID ':' monster_list - ; + room_align : '(' h_justif ',' v_justif ')' + | RANDOM_TYPE + ; - rooms : /* Nothing - dummy room for use with INIT_MAP */ - | roomlist - ; + room_size : '(' INTEGER ',' INTEGER ')' + | RANDOM_TYPE + ; - roomlist : aroom - | aroom roomlist - ; + room_details : /* nothing */ + | room_details room_detail + ; + + room_detail : room_name + | room_chance + | room_door + | monster_detail + | object_detail + | trap_detail + | altar_detail + | fountain_detail + | sink_detail + | pool_detail + | gold_detail + | engraving_detail + | stair_detail + ; + + room_name : NAME_ID ':' string + ; + + room_chance : CHANCE_ID ':' INTEGER + ; + + room_door : DOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos + ; + + secret : BOOLEAN + | RANDOM_TYPE + ; + + door_wall : DIRECTION + | RANDOM_TYPE + ; + + door_pos : INTEGER + | RANDOM_TYPE + ; + + maze_def : MAZE_ID ':' string ',' filling + ; + + filling : CHAR + | RANDOM_TYPE + ; + + regions : aregion + | aregion regions + ; + + aregion : map_definition reg_init map_details + ; + + map_definition : NOMAP_ID + | map_geometry MAP_ID + ; + + map_geometry : GEOMETRY_ID ':' h_justif ',' v_justif + ; + + h_justif : LEFT_OR_RIGHT + | CENTER + ; + + v_justif : TOP_OR_BOT + | CENTER + ; + + reg_init : /* nothing */ + | reg_init init_reg + ; + + init_reg : RANDOM_OBJECTS_ID ':' object_list + | RANDOM_PLACES_ID ':' place_list + | RANDOM_MONSTERS_ID ':' monster_list + ; + + object_list : object + | object ',' object_list + ; + + monster_list : monster + | monster ',' monster_list + ; + + place_list : place + | place ',' place_list + ; + + map_details : /* nothing */ + | map_details map_detail + ; + + map_detail : monster_detail + | object_detail + | door_detail + | trap_detail + | drawbridge_detail + | region_detail + | stair_region + | portal_region + | teleprt_region + | branch_region + | altar_detail + | fountain_detail + | mazewalk_detail + | wallify_detail + | ladder_detail + | stair_detail + | gold_detail + | engraving_detail + | diggable_detail + | passwall_detail + ; + + monster_detail : MONSTER_ID chance ':' monster_c ',' m_name ',' coordinate + monster_infos + ; - corridors_def : random_corridors - | corridors - ; + monster_infos : /* nothing */ + | monster_infos monster_info + ; - random_corridors: RAND_CORRIDOR_ID - ; + monster_info : ',' string + | ',' MON_ATTITUDE + | ',' MON_ALERTNESS + | ',' alignment + | ',' MON_APPEARANCE string + ; - corridors : /* nothing */ - | corridors corridor - ; + object_detail : OBJECT_ID object_desc + | COBJECT_ID object_desc + ; - corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec - | CORRIDOR_ID ':' corr_spec ',' INTEGER - ; + object_desc : chance ':' object_c ',' o_name ',' object_where object_infos + ; - corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')' - ; + object_where : coordinate + | CONTAINED + ; - aroom : room_def room_details + object_infos : /* nothing */ + | ',' curse_state ',' monster_id ',' enchantment optional_name + | ',' curse_state ',' enchantment optional_name + | ',' monster_id ',' enchantment optional_name + ; + + curse_state : RANDOM_TYPE + | CURSE_TYPE + ; + + monster_id : STRING + ; + + enchantment : RANDOM_TYPE + | INTEGER + ; + + optional_name : /* nothing */ + | ',' NONE + | ',' STRING + ; + + door_detail : DOOR_ID ':' door_state ',' coordinate + ; + + trap_detail : TRAP_ID chance ':' trap_name ',' coordinate + ; + + drawbridge_detail: DRAWBRIDGE_ID ':' coordinate ',' DIRECTION ',' door_state + ; + + mazewalk_detail : MAZEWALK_ID ':' coordinate ',' DIRECTION + ; + + wallify_detail : WALLIFY_ID + ; + + ladder_detail : LADDER_ID ':' coordinate ',' UP_OR_DOWN + ; + + stair_detail : STAIR_ID ':' coordinate ',' UP_OR_DOWN + ; + + stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN + ; + + portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' string + ; + + teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail + ; + branch_region : BRANCH_ID ':' lev_region ',' lev_region + ; + teleprt_detail : /* empty */ + | ',' UP_OR_DOWN + ; -May Last change: 16 2 + lev_region : region + | LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' + ; + fountain_detail : FOUNTAIN_ID ':' coordinate + ; + sink_detail : SINK_ID ':' coordinate + ; + pool_detail : POOL_ID ':' coordinate + ; + diggable_detail : NON_DIGGABLE_ID ':' region + ; + passwall_detail : NON_PASSWALL_ID ':' region + ; -LEV_COMP(6) 1996 LEV_COMP(6) + region_detail : REGION_ID ':' region ',' light_state ',' room_type prefilled + ; + altar_detail : ALTAR_ID ':' coordinate ',' alignment ',' altar_type + ; + gold_detail : GOLD_ID ':' amount ',' coordinate + ; - | subroom_def room_details - ; + engraving_detail: ENGRAVING_ID ':' coordinate ',' engraving_type ',' string + ; - subroom_def : SUBROOM_ID ':' room_type ',' light_state ',' subroom_pos ',' room_size ',' string roomfill - ; + monster_c : monster + | RANDOM_TYPE + | m_register + ; - room_def : ROOM_ID ':' room_type ',' light_state ',' room_pos ',' room_align ',' room_size roomfill - ; + object_c : object + | RANDOM_TYPE + | o_register + ; - roomfill : /* nothing */ - | ',' BOOLEAN - ; + m_name : string + | RANDOM_TYPE + ; - room_pos : '(' INTEGER ',' INTEGER ')' - | RANDOM_TYPE - ; + o_name : string + | RANDOM_TYPE + ; - subroom_pos : '(' INTEGER ',' INTEGER ')' - | RANDOM_TYPE - ; + trap_name : string + | RANDOM_TYPE + ; - room_align : '(' h_justif ',' v_justif ')' - | RANDOM_TYPE - ; + room_type : string + | RANDOM_TYPE + ; - room_size : '(' INTEGER ',' INTEGER ')' - | RANDOM_TYPE - ; + prefilled : /* empty */ + | ',' FILLING + | ',' FILLING ',' BOOLEAN + ; - room_details : /* nothing */ - | room_details room_detail - ; + coordinate : coord + | p_register + | RANDOM_TYPE + ; - room_detail : room_name - | room_chance - | room_door - | monster_detail - | object_detail - | trap_detail - | altar_detail - | fountain_detail - | sink_detail - | pool_detail - | gold_detail - | engraving_detail - | stair_detail - ; + door_state : DOOR_STATE + | RANDOM_TYPE + ; - room_name : NAME_ID ':' string - ; + light_state : LIGHT_STATE + | RANDOM_TYPE + ; - room_chance : CHANCE_ID ':' INTEGER + alignment : ALIGNMENT + | a_register + | RANDOM_TYPE + ; + altar_type : ALTAR_TYPE + | RANDOM_TYPE + ; - -May Last change: 16 3 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - ; - - room_door : DOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos - ; - - secret : BOOLEAN - | RANDOM_TYPE - ; - - door_wall : DIRECTION - | RANDOM_TYPE - ; - - door_pos : INTEGER - | RANDOM_TYPE - ; - - maze_def : MAZE_ID ':' string ',' filling - ; - - filling : CHAR - | RANDOM_TYPE - ; - - regions : aregion - | aregion regions - ; - - aregion : map_definition reg_init map_details - ; - - map_definition : NOMAP_ID - | map_geometry MAP_ID - ; - - map_geometry : GEOMETRY_ID ':' h_justif ',' v_justif - ; - - h_justif : LEFT_OR_RIGHT - | CENTER - ; - - v_justif : TOP_OR_BOT - | CENTER - ; - - reg_init : /* nothing */ - | reg_init init_reg - ; - - init_reg : RANDOM_OBJECTS_ID ':' object_list - | RANDOM_PLACES_ID ':' place_list - - - -May Last change: 16 4 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - | RANDOM_MONSTERS_ID ':' monster_list - ; - - object_list : object - | object ',' object_list - ; - - monster_list : monster - | monster ',' monster_list - ; - - place_list : place - | place ',' place_list - ; - - map_details : /* nothing */ - | map_details map_detail - ; - - map_detail : monster_detail - | object_detail - | door_detail - | trap_detail - | drawbridge_detail - | region_detail - | stair_region - | portal_region - | teleprt_region - | branch_region - | altar_detail - | fountain_detail - | mazewalk_detail - | wallify_detail - | ladder_detail - | stair_detail - | gold_detail - | engraving_detail - | diggable_detail - | passwall_detail - ; - - monster_detail : MONSTER_ID chance ':' monster_c ',' m_name ',' coordinate - monster_infos - ; - - monster_infos : /* nothing */ - | monster_infos monster_info - ; - - monster_info : ',' string - | ',' MON_ATTITUDE - | ',' MON_ALERTNESS - - - -May Last change: 16 5 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - | ',' alignment - | ',' MON_APPEARANCE string - ; - - object_detail : OBJECT_ID object_desc - | COBJECT_ID object_desc - ; - - object_desc : chance ':' object_c ',' o_name ',' object_where object_infos - ; - - object_where : coordinate - | CONTAINED - ; - - object_infos : /* nothing */ - | ',' curse_state ',' monster_id ',' enchantment optional_name - | ',' curse_state ',' enchantment optional_name - | ',' monster_id ',' enchantment optional_name - ; - - curse_state : RANDOM_TYPE - | CURSE_TYPE - ; - - monster_id : STRING - ; - - enchantment : RANDOM_TYPE - | INTEGER - ; - - optional_name : /* nothing */ - | ',' NONE - | ',' STRING - ; - - door_detail : DOOR_ID ':' door_state ',' coordinate - ; - - trap_detail : TRAP_ID chance ':' trap_name ',' coordinate - ; - - drawbridge_detail: DRAWBRIDGE_ID ':' coordinate ',' DIRECTION ',' door_state - ; - - mazewalk_detail : MAZEWALK_ID ':' coordinate ',' DIRECTION - ; - - wallify_detail : WALLIFY_ID - ; - - - - -May Last change: 16 6 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - ladder_detail : LADDER_ID ':' coordinate ',' UP_OR_DOWN - ; - - stair_detail : STAIR_ID ':' coordinate ',' UP_OR_DOWN - ; - - stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN - ; - - portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' string - ; - - teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail - ; - - branch_region : BRANCH_ID ':' lev_region ',' lev_region - ; - - teleprt_detail : /* empty */ - | ',' UP_OR_DOWN - ; - - lev_region : region - | LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' - ; - - fountain_detail : FOUNTAIN_ID ':' coordinate - ; - - sink_detail : SINK_ID ':' coordinate - ; - - pool_detail : POOL_ID ':' coordinate - ; - - diggable_detail : NON_DIGGABLE_ID ':' region - ; - - passwall_detail : NON_PASSWALL_ID ':' region - ; - - region_detail : REGION_ID ':' region ',' light_state ',' room_type prefilled - ; - - altar_detail : ALTAR_ID ':' coordinate ',' alignment ',' altar_type - ; - - gold_detail : GOLD_ID ':' amount ',' coordinate - ; - - engraving_detail: ENGRAVING_ID ':' coordinate ',' engraving_type ',' string - ; - - - -May Last change: 16 7 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - monster_c : monster - | RANDOM_TYPE - | m_register - ; - - object_c : object - | RANDOM_TYPE - | o_register - ; - - m_name : string - | RANDOM_TYPE - ; - - o_name : string - | RANDOM_TYPE - ; - - trap_name : string - | RANDOM_TYPE - ; - - room_type : string - | RANDOM_TYPE - ; - - prefilled : /* empty */ - | ',' FILLING - | ',' FILLING ',' BOOLEAN - ; - - coordinate : coord - | p_register - | RANDOM_TYPE - ; - - door_state : DOOR_STATE - | RANDOM_TYPE - ; - - light_state : LIGHT_STATE - | RANDOM_TYPE - ; - - alignment : ALIGNMENT - | a_register - | RANDOM_TYPE - ; - - altar_type : ALTAR_TYPE - | RANDOM_TYPE - ; - - - -May Last change: 16 8 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - p_register : P_REGISTER '[' INTEGER ']' - ; - - o_register : O_REGISTER '[' INTEGER ']' - ; - - m_register : M_REGISTER '[' INTEGER ']' - ; - - a_register : A_REGISTER '[' INTEGER ']' - ; - - place : coord - ; - - monster : CHAR - ; - - object : CHAR - ; - - string : STRING - ; - - amount : INTEGER - | RANDOM_TYPE - ; - - chance : /* empty */ - | PERCENT - ; - - engraving_type : ENGRAVING_TYPE - | RANDOM_TYPE - ; - - coord : '(' INTEGER ',' INTEGER ')' - ; - - region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' - ; - - NOTE: - Lines beginning with '#' are considered comments. - - The contents of a "MAP" description of a maze is a rectangle - showing the exact level map that should be used for the - given part of a maze. Each character in the map corresponds - to a location on the screen. Different location types are - denoted using different ASCII characters. The following - characters are recognized. To give an idea of how these are - used, see the EXAMPLE, below. The maximum size of a map is - - - -May Last change: 16 9 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - normally 76 columns by 21 rows. - - '-' horizontal wall - '|' vertical wall - '+' a doorway (state is specified in a DOOR declaration) - 'A' open air - 'B' boundary room location (for bounding unwalled irregular regions) - 'C' cloudy air - 'I' ice - 'S' a secret door - 'H' a secret corridor - '{' a fountain - '\' a throne - 'K' a sink (if SINKS is defined, else a room location) - '}' a part of a moat or other deep water - 'P' a pool - 'L' lava - 'W' water (yes, different from a pool) - 'T' a tree - 'F' iron bars - '#' a corridor - '.' a normal room location (unlit unless lit in a REGION declaration) - ' ' stone + p_register : P_REGISTER '[' INTEGER ']' + ; + + o_register : O_REGISTER '[' INTEGER ']' + ; + + m_register : M_REGISTER '[' INTEGER ']' + ; + + a_register : A_REGISTER '[' INTEGER ']' + ; + + place : coord + ; + + monster : CHAR + ; + + object : CHAR + ; + + string : STRING + ; + + amount : INTEGER + | RANDOM_TYPE + ; + + chance : /* empty */ + | PERCENT + ; + + engraving_type : ENGRAVING_TYPE + | RANDOM_TYPE + ; + + coord : '(' INTEGER ',' INTEGER ')' + ; + + region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' + ; + + NOTE: + Lines beginning with '#' are considered comments. + + The contents of a "MAP" description of a maze is a rectangle showing + the exact level map that should be used for the given part of a maze. + Each character in the map corresponds to a location on the screen. + Different location types are denoted using different ASCII characters. + The following characters are recognized. To give an idea of how these + are used, see the EXAMPLE, below. The maximum size of a map is nor- + mally 76 columns by 21 rows. + + '-' horizontal wall + '|' vertical wall + '+' a doorway (state is specified in a DOOR declaration) + 'A' open air + 'B' boundary room location (for bounding unwalled irregular regions) + 'C' cloudy air + 'I' ice + 'S' a secret door + 'H' a secret corridor + '{' a fountain + '\' a throne + 'K' a sink + '}' a part of a moat or other deep water + 'P' a pool + 'L' lava + 'W' water (yes, different from a pool) + 'T' a tree + 'F' iron bars + '#' a corridor + '.' a normal room location (unlit unless lit in a REGION declaration) + ' ' stone EXAMPLE - Here is an example of a description file (a very simple - one): + Here is an example of a description file (a very simple one): - MAZE : "fortress", random - GEOMETRY : center , center - MAP - }}}}}}}}} - }}}|-|}}} - }}|-.-|}} - }|-...-|} - }|.....|} - }|-...-|} - }}|-.-|}} - }}}|-|}}} - }}}}}}}}} - ENDMAP - MONSTER: '@', "Wizard of Yendor", (4,4) - OBJECT: '"', "Amulet of Yendor", (4,4) - # a hell hound flanking the Wiz on a random side - RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4) - MONSTER: 'd', "hell hound", place[0] - # a chest on another random side - OBJECT: '(', "chest", place[1] - # a sack on a random side, with a diamond and maybe a ruby in it - CONTAINER: '(', "sack", place[2] - OBJECT: '*', "diamond", contained - OBJECT[50%]: '*', "ruby", contained + MAZE : "fortress", random + GEOMETRY : center , center + MAP + }}}}}}}}} + }}}|-|}}} + }}|-.-|}} + }|-...-|} + }|.....|} + }|-...-|} + }}|-.-|}} + }}}|-|}}} + }}}}}}}}} + ENDMAP + MONSTER: '@', "Wizard of Yendor", (4,4) + OBJECT: '"', "Amulet of Yendor", (4,4) + # a hell hound flanking the Wiz on a random side + RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4) + MONSTER: 'd', "hell hound", place[0] + # a chest on another random side + OBJECT: '(', "chest", place[1] + # a sack on a random side, with a diamond and maybe a ruby in it + CONTAINER: '(', "sack", place[2] + OBJECT: '*', "diamond", contained + OBJECT[50%]: '*', "ruby", contained + # a random dragon somewhere + MONSTER: 'D', random, random + # 3 out of 4 chance for a random trap in the EAST end + TRAP[75%]: random, (6,4) + # an electric eel below the SOUTH end + MONSTER: ';', "electric eel", (4,8) + # make the walls non-diggable + NON_DIGGABLE: (0,0,8,8) + TELEPORT_REGION: levregion(0,0,79,20), (0,0,8,8) + This example will produce a file named "fortress" that can be inte- + grated into one of the numerous mazes of the game. - -May Last change: 16 10 - - - - - - -LEV_COMP(6) 1996 LEV_COMP(6) - - - - # a random dragon somewhere - MONSTER: 'D', random, random - # 3 out of 4 chance for a random trap in the EAST end - TRAP[75%]: random, (6,4) - # an electric eel below the SOUTH end - MONSTER: ';', "electric eel", (4,8) - # make the walls non-diggable - NON_DIGGABLE: (0,0,8,8) - TELEPORT_REGION: levregion(0,0,79,20), (0,0,8,8) - - This example will produce a file named "fortress" that can - be integrated into one of the numerous mazes of the game. - - Note especially the final, TELEPORT_REGION specification. - This says that level teleports or other non-stairway - arrivals on this level can land anywhere on the level except - the area of the map. This shows the use of the ``levre- - gion'' prefix allowed in certain region specifications. - Normally, regions apply only to the most recent MAP specifi- - cation, but when prefixed with ``levregion'', one can refer - to any area of the level, regardless of the placement of the - current MAP in the level. + Note especially the final, TELEPORT_REGION specification. This says + that level teleports or other non-stairway arrivals on this level can + land anywhere on the level except the area of the map. This shows the + use of the ``levregion'' prefix allowed in certain region specifica- + tions. Normally, regions apply only to the most recent MAP specifica- + tion, but when prefixed with ``levregion'', one can refer to any area + of the level, regardless of the placement of the current MAP in the + level. AUTHOR - Jean-Christophe Collet, David Cohrs. + Jean-Christophe Collet, David Cohrs. SEE ALSO - dgn_comp(6), nethack(6) + dgn_comp(6), nethack(6) BUGS - Probably infinite. Most importantly, still needs additional - bounds checking. - - - - - - - - - - - - - - - - - - - - - - - -May Last change: 16 11 + Probably infinite. Most importantly, still needs additional bounds + checking. + +COPYRIGHT + This file is Copyright (C) Kenneth Lorber and was last modified + 2018/04/25 (version NetHack-3.6.0:1.7). NetHack may be freely redis- + tributed. See license for details. +NETHACK 25 May 2015 LEV_COMP(6) From cc3570a7d941e31d230aed745c174d6e70e96645 Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 06/12] This is cron-daily v1-Jan-14-2020. manpages updated: makedefs.txt --- doc/makedefs.txt | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/doc/makedefs.txt b/doc/makedefs.txt index 8c2edb3c8..97a1f0ac7 100644 --- a/doc/makedefs.txt +++ b/doc/makedefs.txt @@ -1,4 +1,4 @@ -MAKEDEFS(6) MAKEDEFS(6) +MAKEDEFS(6) Games Manual MAKEDEFS(6) @@ -32,7 +32,9 @@ SHORT COMMANDS -m Generate monster.c. - -v Generate date.h and options file. + -v Generate date.h and options file. It will read dat/gitinfo.txt, + only if it is present, to obtain githash= and gitbranch= + info and include related preprocessor #defines in date.h file. -p Generate pm.h @@ -40,11 +42,20 @@ SHORT COMMANDS -r Generate the rumors file. + -s Generate the bogusmon , engrave and epitaphfiles. + -h Generate the oracles file. -z Generate vis_tab.c and vis_tab.h. LONG COMMANDS + --debug + Show debugging output. + + --make [command] + Execute a short command. Command is given without preceding + dash. + --input file Specify the input file for the command (if needed). If the file is - standard input is read. @@ -58,7 +69,7 @@ LONG COMMANDS newline. If specified, the delimiter is used between each part of the version string. - --grep Filter the input file to the output file. See the MDGREP FUNC + --grep Filter the input file to the output file. See the MDGREP FUNC- TIONS section below for information on controlling the filtering operation. @@ -82,7 +93,7 @@ MDGREP FUNCTIONS The --grep command (and certain other commands) filter their input, on a line-by-line basis, according to control lines embedded in the input and on information gleaned from the NetHack(6) configuration. This - allows certain changes such as embedding platform-specific documenta + allows certain changes such as embedding platform-specific documenta- tion into the master documentation files. Rules: @@ -90,11 +101,11 @@ MDGREP FUNCTIONS - The default conditional state is printing enabled. - Any line NOT starting with a caret (^) is either suppressed - or passed through unchanged depending on the current condi + or passed through unchanged depending on the current condi- tional state. - Any line starting with a caret is a control line; as in C, - zero or more spaces may be embedded in the line almost any + zero or more spaces may be embedded in the line almost any- where (except immediately after the caret); however the caret must be in column 1. @@ -105,7 +116,7 @@ MDGREP FUNCTIONS many errors as possible to be detected. - Unknown identifiers are treated as both TRUE and as an - error. Note that --undef or #undef in the NetHack(6) con + error. Note that --undef or #undef in the NetHack(6) con- figuration are different from unknown. Control lines: @@ -130,6 +141,11 @@ AUTHOR SEE ALSO dgn_comp(6) +COPYRIGHT + This file is Copyright (C) Kenneth Lorber and was last modified + 2018/04/25 (version NetHack-3.6.0:1.10). NetHack may be freely redis- + tributed. See license for details. -4th Berkeley Distribution 29 Apr 2010 MAKEDEFS(6) + +NETHACK 25 May 2015 MAKEDEFS(6) From 7ac4e0fd069b5b6db329c58719dac289a9db40c7 Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 07/12] This is cron-daily v1-Jan-14-2020. manpages updated: nethack.txt --- doc/nethack.txt | 128 +++++++++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 57 deletions(-) diff --git a/doc/nethack.txt b/doc/nethack.txt index 9cd48ce3d..95a220b4a 100644 --- a/doc/nethack.txt +++ b/doc/nethack.txt @@ -1,4 +1,4 @@ -NETHACK(6) NETHACK(6) +NETHACK(6) Games Manual NETHACK(6) @@ -7,113 +7,124 @@ NAME SYNOPSIS nethack [ -d directory ] [ -n ] [ -p profession ] [ -r race ] [ -[DX] ] - [ -u playername ] [ -dec ] [ -ibm ] [ --version[:paste] ] + [ -u playername ] [ -dec ] [ -ibm ] [ --showpaths ] [ --version[:paste] + ] nethack [ -d directory ] -s [ -v ] [ -p profession ] [ -r race ] [ playernames ] DESCRIPTION - NetHack is a display oriented Dungeons & Dragons(tm) - like game. The + NetHack is a display oriented Dungeons & Dragons(tm) - like game. The standard tty display and command structure resemble rogue. Other, more graphical display options exist for most platforms. - To get started you really only need to know two commands. The command - ? will give you a list of the available commands (as well as other - information) and the command / will identify the things you see on the + To get started you really only need to know two commands. The command + ? will give you a list of the available commands (as well as other + information) and the command / will identify the things you see on the screen. - To win the game (as opposed to merely playing to beat other people's - high scores) you must locate the Amulet of Yendor which is somewhere + To win the game (as opposed to merely playing to beat other people's + high scores) you must locate the Amulet of Yendor which is somewhere below the 20th level of the dungeon and get it out. Few people achieve this; most never do. Those who have go down in history as heroes among - heroes - and then they find ways of making the game even harder. See - the Guidebook section on Conduct if this game has gotten too easy for + heroes - and then they find ways of making the game even harder. See + the Guidebook section on Conduct if this game has gotten too easy for you. - When the game ends, whether by your dying, quitting, or escaping from - the caves, NetHack will give you (a fragment of) the list of top scor- - ers. The scoring is based on many aspects of your behavior, but a + When the game ends, whether by your dying, quitting, or escaping from + the caves, NetHack will give you (a fragment of) the list of top scor- + ers. The scoring is based on many aspects of your behavior, but a rough estimate is obtained by taking the amount of gold you've found in - the cave plus four times your (real) experience. Precious stones may - be worth a lot of gold when brought to the exit. There is a 10% + the cave plus four times your (real) experience. Precious stones may + be worth a lot of gold when brought to the exit. There is a 10% penalty for getting yourself killed. - The environment variable NETHACKOPTIONS can be used to initialize many - run-time options. The ? command provides a description of these + The environment variable NETHACKOPTIONS can be used to initialize many + run-time options. The ? command provides a description of these options and syntax. (The -dec and -ibm command line options are equiv- - alent to the decgraphics and ibmgraphics run-time options described - there, and are provided purely for convenience on systems supporting + alent to the decgraphics and ibmgraphics run-time options described + there, and are provided purely for convenience on systems supporting multiple types of terminals.) - Because the option list can be very long (particularly when specifying - graphics characters), options may also be included in a configuration - file. The default is located in your home directory and named - .nethackrc on Unix systems. On other systems, the default may be dif- - ferent, usually NetHack.cnf. On DOS or Windows, the name is - defaults.nh, while on the Macintosh or BeOS, it is NetHack Defaults. - The configuration file's location may be specified by setting NETHACK- - OPTIONS to a string consisting of an @ character followed by the file- + Because the option list can be very long (particularly when specifying + graphics characters), options may also be included in a configuration + file. The default is located in your home directory and named + .nethackrc on Unix systems. On other systems, the default may be dif- + ferent, usually NetHack.cnf. On DOS or Windows, the name is + defaults.nh, while on the Macintosh or BeOS, it is NetHack Defaults. + The configuration file's location may be specified by setting NETHACK- + OPTIONS to a string consisting of an @ character followed by the file- name. - The -u playername option supplies the answer to the question "Who are - you?". It overrides any name from the options or configuration file, - USER, LOGNAME, or getlogin(), which will otherwise be tried in order. - If none of these provides a useful name, the player will be asked for + The -u playername option supplies the answer to the question "Who are + you?". It overrides any name from the options or configuration file, + USER, LOGNAME, or getlogin(), which will otherwise be tried in order. + If none of these provides a useful name, the player will be asked for one. Player names (in conjunction with uids) are used to identify save files, so you can have several saved games under different names. Con- - versely, you must use the appropriate player name to restore a saved + versely, you must use the appropriate player name to restore a saved game. A playername suffix can be used to specify the profession, race, align- ment and/or gender of the character. The full syntax of the playername - that includes a suffix is "name-ppp-rrr-aaa-ggg". "ppp" are at least - the first three letters of the profession (this can also be specified - using a separate -p profession option). "rrr" are at least the first + that includes a suffix is "name-ppp-rrr-aaa-ggg". "ppp" are at least + the first three letters of the profession (this can also be specified + using a separate -p profession option). "rrr" are at least the first three letters of the character's race (this can also be specified using - a separate -r race option). "aaa" are at last the first three letters - of the character's alignment, and "ggg" are at least the first three - letters of the character's gender. Any of the parts of the suffix may + a separate -r race option). "aaa" are at least the first three letters + of the character's alignment, and "ggg" are at least the first three + letters of the character's gender. Any of the parts of the suffix may be left out. - -p profession can be used to determine the character profession, also - known as the role. You can specify either the male or female name for - the character role, or the first three characters of the role as an + -p profession can be used to determine the character profession, also + known as the role. You can specify either the male or female name for + the character role, or the first three characters of the role as an abbreviation. -p @ has been retained to explicitly request that a ran- - dom role be chosen. It may need to be quoted with a backslash (\@) if - @ is the "kill" character (see "stty") for the terminal, in order to + dom role be chosen. It may need to be quoted with a backslash (\@) if + @ is the "kill" character (see "stty") for the terminal, in order to prevent the current input line from being cleared. Likewise, -r race can be used to explicitly request that a race be cho- sen. - Leaving out any of these characteristics will result in you being + Leaving out any of these characteristics will result in you being prompted during the game startup for the information. - - The -s option alone will print out the list of your scores on the cur- - rent version. An immediately following -v reports on all versions + The -s option alone will print out the list of your scores on the cur- + rent version. An immediately following -v reports on all versions present in the score file. The -s may also be followed by arguments -p - and -r to print the scores of particular roles and races only. It may + and -r to print the scores of particular roles and races only. It may also be followed by one or more player names to print the scores of the - players mentioned, by 'all' to print out all scores, or by a number to + players mentioned, by 'all' to print out all scores, or by a number to print that many top scores. The -n option suppresses printing of any news from the game administra- tor. - The -D or -X option will start the game in a special non-scoring dis- - covery mode. -D will, if the player is the game administrator, start + The -D or -X option will start the game in a special non-scoring dis- + covery mode. -D will, if the player is the game administrator, start in debugging (wizard) mode instead. The -d option, which must be the first argument if it appears, supplies - a directory which is to serve as the playground. It overrides the - value from NETHACKDIR, HACKDIR, or the directory specified by the game - administrator during compilation (usually /usr/games/lib/nethackdir). - This option is usually only useful to the game administrator. The + a directory which is to serve as the playground. It overrides the + value from NETHACKDIR, HACKDIR, or the directory specified by the game + administrator during compilation (usually /usr/games/lib/nethackdir). + This option is usually only useful to the game administrator. The playground must contain several auxiliary files such as help files, the list of top scorers, and a subdirectory save where games are saved. + --showpaths can be used to cause NetHack to show where it is expecting + to find various configuration files. + + --version can be used to cause NetHack to show the version information + it was compiled with, then exit. That will include the git commit hash + if the information was available when the game was compiled. On some + platforms, such as windows and macosx, a variation --version:paste can + be used to cause NetHack to show the version information, then exit, + while also leaving a copy of the version information in the paste buf- + fer or clipboard for potential insertion into things like bug reports. + AUTHORS Jay Fenlason (+ Kenny Woodland, Mike Thome and Jon Payne) wrote the original hack, very much like rogue (but full of bugs). @@ -212,10 +223,13 @@ SEE ALSO BUGS Probably infinite. - +COPYRIGHT + This file is Copyright (C) Robert Patrick Rankin and was last modified + 2019/09/15 (version NetHack-3.6:1.16). NetHack may be freely redis- + tributed. See license for details. Dungeons & Dragons is a Trademark of Wizards of the Coast, Inc. - 7 December 2015 NETHACK(6) +NETHACK 2 February 2018 NETHACK(6) From 35634fab8e43652bae5d5ff6224e1deffc789e35 Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 08/12] This is cron-daily v1-Jan-14-2020. manpages updated: recover.txt --- doc/recover.txt | 173 ++++++++++++++++++------------------------------ 1 file changed, 65 insertions(+), 108 deletions(-) diff --git a/doc/recover.txt b/doc/recover.txt index 80eeadb51..c2d4af038 100644 --- a/doc/recover.txt +++ b/doc/recover.txt @@ -1,132 +1,89 @@ - - - -RECOVER(6) 1993 RECOVER(6) +RECOVER(6) Games Manual RECOVER(6) NAME - recover - recover a NetHack game interrupted by disaster + recover - recover a NetHack game interrupted by disaster SYNOPSIS - recover [ -d directory ] base1 base2 ... + recover [ -d directory ] base1 base2 ... 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 per- - tinent information can be written out to disk, so such games - can be recovered at the point of the last level change. + 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. - The base options tell recover which files to process. Each - base option specifies recovery of a separate game. + 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 during - compilation (usually /usr/games/lib/nethackdir). + The -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 admin- + istrator during compilation (usually /usr/games/lib/nethackdir). - For recovery to be possible, nethack must have been compiled - with the INSURANCE option, and the run-time option check- - point 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. + ^?ALLDOCS For recovery to be possible, nethack must have been compiled + with the INSURANCE option, and the run-time option checkpoint must also + have been on. ^: ^?INSURANCE For recovery to be possible, nethack must + have been compiled with the INSURANCE option (this configuration was), + and the run-time option checkpoint must also have been on. ^: This + configuration of 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. - 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 play- - ground 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. + 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. Vari- + ous 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. 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 ordi- - nary players access to recover through setuid or setgid is - tantamount to leaving the playground world-writable, with - respect to both cheating and messing up other players. For + 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 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 recover by default. - - -January Last change: 9 1 - - - - - - -RECOVER(6) 1993 RECOVER(6) - - - - a single-user system, this of course does not change any- - thing, 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 permis- - sions the nethack executable has. In either case, recover - is easily compiled from the distribution utility directory. + 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 popu- + lation is sufficiently trustworthy, recover can be installed with the + same permissions the nethack executable has. In either case, recover + is easily compiled from the distribution 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. + Like nethack itself, recover will overwrite existing savefiles 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) + 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 play- - ground, this would be impossible to determine. + 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. - recover should be taught to use the nethack playground lock- - ing mechanism to avoid conflicts. - - - - - - - - - - - - - - - - - - - - - - - - - - -January Last change: 9 2 + recover should be taught to use the nethack playground locking mecha- + nism to avoid conflicts. + +COPYRIGHT + This file is Copyright (C) Kenneth Lorber and was last modified + 2018/04/25 (version NetHack-3.6.0:1.9). NetHack may be freely redis- + tributed. See license for details. +NETHACK 14 December 2015 RECOVER(6) From 144aabce9495c97979476323cf6843775f4e77bd Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:37 -0500 Subject: [PATCH 09/12] This is cron-daily v1-Jan-14-2020. files updated: Files --- Files | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Files b/Files index 794a57090..bec5794e8 100644 --- a/Files +++ b/Files @@ -51,9 +51,9 @@ fixes31.3 fixes32.0 fixes32.1 fixes32.2 fixes32.3 fixes33.0 fixes33.1 fixes34.0 fixes34.1 fixes34.2 fixes34.3 fixes35.0 fixes36.0 fixes36.1 fixes36.2 fixes36.3 fixes36.4 fixes36.5 lev_comp.6 lev_comp.txt -makedefs.6 makedefs.txt mn.7 mnh.7 nethack.6 -nethack.txt recover.6 recover.txt tmac.n tmac.nh -window.doc +makedefs.6 makedefs.txt mn.7 mn.txt mnh.7 +mnh.txt nethack.6 nethack.txt recover.6 recover.txt +tmac.n tmac.nh window.doc include: (files for GEM versions) From 466a126e396a446a9ce42a28b278663c3f0bba3f Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 10/12] This is cron-daily v1-Jan-14-2020. manpages updated: mn.txt --- doc/mn.txt | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 doc/mn.txt diff --git a/doc/mn.txt b/doc/mn.txt new file mode 100644 index 000000000..502a0f3bb --- /dev/null +++ b/doc/mn.txt @@ -0,0 +1,215 @@ +MN(7) Miscellaneous Information Manual MN(7) + + + +NAME + mn - text formatting macros for the news documentation + +SYNOPSIS + nroff -mn [ options ] file ... + troff -mn [ options ] file ... + +DESCRIPTION + This package of nroff(1) and troff(1) macro definitions provides a for- + matting facility which may be used to run off the formatted news docu- + ments. When reverse line motions are needed, filter the output through + col(1). + + All -mn macros, diversions, string registers, and number registers are + defined below. Many nroff and troff requests are unsafe in conjunction + with this package. However, the requests below may be used with + impunity: + + .bp begin new page + .br break output line + .sp n insert n spacing lines + .ce n center next n lines + .ls n line spacing: n=1 single, n=2 double space + .na no alignment of right margin + + Font and point size changes with \f and \s are also allowed; for exam- + ple, ``\f2word\fR'' will italicize word. Output of the tbl(1), eqn(1), + and refer(1) preprocessors for equations, tables, and references is + acceptable as input. + +FILES + /usr/lib/tmac/tmac.n + +SEE ALSO + eqn(1), refer(1), tbl(1), troff(1) + +WARNINGS + If you do not set the string register ``.f'' to the file name, you will + only be told the line number on which any errors occur. If you define + this string to be the file name, you will get the file name, too. This + is useful when dealing with a document split up into many files. + + This package is not now intended for uses other than with the news doc- + umentation. + + Bug reports are always welcome; please send them to the author. + (Include a sample of the input; this helps track down the bug.) + +AUTHOR + Matt Bishop (mab@riacs.arpa, ihnp4!ames!riacs!mab, dec- + vax!decwrl!riacs!mab) + Updated for versions 1.4-1.6 by The NetHack Development Team + +REQUESTS + In the Note column, b means the request causes a break, and i means the + macro, number register, string register, or diversion is internal and + should not be used for anything. In the What It Is column, div means + diversion, mac means macro, num means number register, and str means + string register. In the Initial Value column, a hyphen means no ini- + tial value is used, anything else is the initial value, and if two val- + ues are given, the first is for nroff and the second for troff. + +Macro What Initial Note Explanation +Name It Is Value +.f num - - file name, used in error messages if set +.ai mac - - author's institution +.au mac - b author's name +.b x y z mac - - print x in font 3, y after, z before; + if no arguments, switch to font 3 +b num - i used to embolden italics +.bi x y z mac - - print x in emboldened font 2, y after, + z before +bm num 1i,1i+1v - height of bottom margin +.bt mac - - print pottom title +bt num .5i+1v - bottom of footer to bottom of page +.cf x y z mac - - print contents of header line (double + quotes around x, y before, z after) +cm num 0 - 0 if no cut marks, nonzero if cut marks +.cn x y z mac - - print computer/site name; same as .i +.dd div - i text of display +dg str *,- - footnote mark +dw str current - name of current day of week +dy str current - full date +.ed mac - b end display +.ef mac - b end footnote +.ei mac - b move left margin to the right +.er mac - - print error message +.et mac - b,i macro called at end of text +f0 str - - left bottom title +f1 num - i current font number +f1 str date,- - center bottom title +f2 num - i previous font number +f2 str - - right bottom title +fc num - i per-page footnote count +.fd mac - b,i drop footnotes +fg num - i gets fudge factor for footnote +fl num 5.5i - default footnote line length +.fn mac - - begin footnote +.fo mac - - bottom of page (footer) macro +fp num - i current location of trap for .fo macro +.fs mac - i print text/footnote separator +fs num - i position where footnote printing should begin +.fx mac - i collect overflow footnotes +.fy div - i text of footnote overflow +.fz mac - i move overflow footnotes from .fy to .tf +gs num - i used to be sure footnotes fit +h0 num 0 i current level 1 section number +h0 str - - left header title +h1 num 0 i current level 2 section number +h1 str - page - - center header title +h2 num 0 i current level 3 section number +h2 str - - right header title +h3 num 0 i current level 4 section number +.hd mac - i top of page (header) macro +.hf mac - - print header field name; same as .cf +.hn x mac - b numbered section; if present, x is level +hn num 0 i current level of numbering (temporary) +hs num 1v - default intra-section spacing +.hu mac - b unnumbered section header +.i x y z mac - - print x in font 2, y after, z before; + if no arguments, switch to font 2 +i1 num - i current indent +i2 num - i previous indent +id num 0 i 1 if in display, 0 otherwise +if num 0 i 1 if in footnote, 0 otherwise +.is x y z mac - - print x 2p bigger, y after, z before; + if no arguments, increase point size by 2p +it num 0 i 0 before .bt called, 1 after +l0 num 0 i leftmost position for left margin +l1 num - i first level of indent for left margin +l2 num - i second level of indent for left margin +l3 num - i third level of indent for left margin +l4 num - i fourth level of indent for left margin +l5 num - i fifth level of indent for left margin +l6 num - i sixth level of indent for left margin +l7 num - i seventh level of indent for left margin +l8 num - i eighth level of indent for left margin +l9 num - i ninth level of indent for left margin +li num 5n - paragraph indent +ll num 6i - default line length +lm num 0 i current level of indent for left margin +lo num - i previous level for left margin +.lp x y mac - b labelled paragraph; x is label, y indent +lq str ",`` - left double quotation marks +mo str current - name of current month +.mt mac - b title +mt num 1.5i+1v - distance of title from top of page +.ng x y z mac - - newsgroup name; same as .b +.nl mac - b reset point size to default +ns num 0 i if nonzero, .fn does not call .fs +.op x y z mac - - command option; same as .b +p1 num 0 i 1 after PDP-11(tm) footnote printed, + 0 before +.pa x y z mac - - print protocol appellation; same as .i +.pd x y mac - - print PDP-11(tm), footnote; x after, + y before +pd num 1v,.3v - intra-paragraph spacing +.pf mac - - print footer title +.pg x mac - b paragraph; if x is l, left justify +pi num 5n - default paragraph indent +po num 1.25i - default page offset +ps num 12p - default point size +.pt x mac - - print header; x is distance from top of + page +.qc x y z mac - - print name of control char; x is name, + in font 3, between <>, y after, z before +.qp x y z mac - - print char; same as .b +.r mac - - switch to font 1 +rg str - - registered trademark symbol +rq str ",'' - right double quotation marks +s1 num - i current point size +s2 num - i previous point size +.sd x mac - - start display; if x is c, center display +sf num - i 1 if center display, 0 otherwise +.si x num - - indent left margin by x (5n default) +.sm x y z mac - - print x 2p smaller, y after, z before; + if no arguments, decrease point size by 2p +.sn x mac - b space by x (1v default), enter nospace mode +.sr x mac - - enter spacemode, space by x (1v default) +t2 num 0 i 0 if little/no space, nonzero otherwise +.tf div - i text of footnotes +tm num 1i-.5v - height of top margin +tt num .5i-.5v - distance from top of page to header +.ux x y mac - - print UNIX(tm), footnote; x after, + y before +ux num 0 i 1 after UNIX(tm) footnote printed, + 0 before +v1 num - i current vertical spacing +v2 num - i previous vertical spacing +vr str - - current version of news +vs num 16p - default vertical spacing +vx num 0 i 1 after VAX(tm) footnote printed, + 0 before +.vx x y mac - - print VAX(tm), footnote; x after, + y before +ws str - - used to construct error message +.ya mac - - same as calling .yf, .yi, .ys, .yv +.yf mac - - restore fonts saved by .zf +.yi mac - - restore indents saved by .zi +Yr str - - current year +.ys mac - - restore point sizes saved by .zs +.yv mac - - restore vertical spacings saved by .zv +.za mac - - same as calling .zf, .zi, .zs, .zv +.zf mac - - save previous, current fonts +.zi mac - - save previous, current indents +.zs mac - - save previous, current point sizes +.zv mac - - save previous, current vertical spacings + + + + News Version B2.11 MN(7) From b21b99d433a9267716f4a3a917e16b36aec67ebe Mon Sep 17 00:00:00 2001 From: nhw_cron Date: Tue, 14 Jan 2020 11:17:34 -0500 Subject: [PATCH 11/12] This is cron-daily v1-Jan-14-2020. manpages updated: mnh.txt --- doc/mnh.txt | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 doc/mnh.txt diff --git a/doc/mnh.txt b/doc/mnh.txt new file mode 100644 index 000000000..b7e966065 --- /dev/null +++ b/doc/mnh.txt @@ -0,0 +1,59 @@ +MNH(7) Miscellaneous Information Manual MNH(7) + + + +NAME + mnh - additional text formatting macros for the NetHack Guidebook + +SYNOPSIS + make Guidebook + +DESCRIPTION + This package of nroff(1) and troff(1) macro definitions extends + tmac.n(7) for the NetHack Guidebook. This document should be read as + an addendum to the documentation for tmac.n. + + All -mnh macros, diversions, string registers, and number registers are + defined below. + +FILES + doc/tmac.nh + +SEE ALSO + mn(7) + +AUTHOR + Pat Rankin + +REQUESTS + In the Note column, b means the request causes a break, and i means the + macro, number register, string register, or diversion is internal and + should not be used for anything. In the What It Is column, div means + diversion, mac means macro, num means number register, and str means + string register. In the Initial Value column, a hyphen means no ini- + tial value is used, anything else is the initial value, and if two val- + ues are given, the first is for nroff and the second for troff. + +Macro What Initial Note Explanation +Name It Is Value +.BR mac - - hard line break with vertical padding inserted +bR num - i +.CC x y mac - - aligned one char key x with short definition y +CW num - i +CX num - i +CY num - i +CZ num - i +CZ num - i +.ED mac - - ends .SD +.PE mac - b labelled paragraph end +.PL x mac - b labelled paragraph label is x +.PS x mac - b labelled paragraph start for label the width of x +PX num - i +PY num - i +.SD x mac - - .sd with options c-center i-indent n-no indent +SF num - i +.UX mac - - .ux with updated trademark owner + + + + NETHACK MNH(7) From deccf6a7965207b7ed5960f4fdc0dd7b8082c4be Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 14 Jan 2020 14:34:03 -0800 Subject: [PATCH 12/12] fix sym_val() buffer overrun fix Fix a mistake in commit 74de7d31e0a6b3e2ebd852e333fe66d212fd6a90. Copy+paste error resulted in 'strval + 1' when 'strval' is required. --- src/options.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/options.c b/src/options.c index 1f8477193..8b56a87a3 100644 --- a/src/options.c +++ b/src/options.c @@ -6202,6 +6202,7 @@ const char *strval; /* up to 4*BUFSZ-1 long; only first few chars matter */ } else { char *p; + /* +1: skip opening single quote */ (void) strncpy(tmp, strval + 1, sizeof tmp - 1); tmp[sizeof tmp - 1] = '\0'; if ((p = rindex(tmp, '\'')) != 0) { @@ -6210,7 +6211,7 @@ const char *strval; /* up to 4*BUFSZ-1 long; only first few chars matter */ } /* else buf[0] stays '\0' */ } } else { /* not lone char nor single quote */ - (void) strncpy(tmp, strval + 1, sizeof tmp - 1); + (void) strncpy(tmp, strval, sizeof tmp - 1); tmp[sizeof tmp - 1] = '\0'; escapes(tmp, buf); }