Commit Graph
78 Commits
Author SHA1 Message Date
nhmall 68fdc3bbcb February 2020 options.c overhaul
combine boolean and compound options into a single allopt[] array for
processing in options.c.

move the definitions of the options into new include/optlist.h file which
uses a set of macros to define them appropriately.

during compile of options.c each option described in include/optlist.h:
   1. automatically results in a function prototype for an optfn called
      optfn_xxxx (xxxx is the option name).
   2. automatically results in an opt_xxxx enum value for referencing
      its index throughout options.c (xxxx is the option name).
   3. is used to initialize an element of the allopt[] array at index
      opt_xxxx (xxxx is the option name) based on the settings in the
      NHOPTB, NHOPTC, NHOPTP macros. Those macros only live during the
      compilation of include/optlist.h.

each optfn_xxxx() function can be called with a req id of: do_init, do_set,
get_val or do_handler.

req do_init is called from options_init, and if initialization or memory
allocation or other initialization for that particular option is needed,
it can be done in response to the init req.

req do_set is called from parseoptions() for each option it encounters
and the optfn_xxxx() function is expected to react and set the option
based on the string values that parseoptions() passes to it.

req get_val expects each optfn_xxxx() function to write the current
option value into the buffer it is passed.

req do_handler is called during doset() operations in response to player
selections most likely from the 'O' option-setting menu, but only if the
option is identified as having do_handler support in the allopts[]
'has_handler' boolean flag. Not every optfn_xxxx() does.

function special_handling() is eliminated. It's code has been redistributed
to individual handler functions for the option or purpose that they serve.

moved reglyph_darkroom() function from options.c to display.c
2020-02-26 00:24:37 -05:00
nhmall 47b18d7bde Merge 'NetHack-3.6' changes into NetHack-3.7-Jan2020 2020-01-25 22:17:42 -05:00
Bart House 05455f7baa Fall back to executable path if we have trouble converting known path. 2020-01-25 17:07:45 -08:00
nhmall 98976b3141 Merge branch 'NetHack-3.6' 2019-12-18 07:38:59 -05:00
nhmall 5f0d06fb80 update and simplify the windows portable_device_paths sysconf option
Requires a sysconf file in the windows executable directory in order to work
2019-12-17 23:16:44 -05:00
nhmall 089b241010 Windows portable_device support: skip the "illegal folder" check for now 2019-12-17 15:32:10 -05:00
nhmall 5d4208cd15 Merge branch 'NetHack-3.6' 2019-12-17 12:01:49 -05:00
nhmall 05df5dfbf2 buffer bit 2019-12-17 01:17:49 -05:00
nhmall ac6e13fd7a allow run-from-removable-device configuration on Windows
Allow a way to configure NetHack to run entirely from a USB stick
or other removable device in a way that allows everything to
reside entirely on the USB stick, and nothing on the computer's
hard drive. That could be done in versions prior to 3.6.3.

Sample:

i: is a USB stick

i:\nhdist contains the NetHack Windows distribution and a sysconf
file dropped into that distribution with the following entry in it:
	portable_device_top = nethack

No device is included in the portable_device_top entry, the device
is always the device that the nethack exe resides on. If you try
to specify a device in the portable_device_top path, the device
portion will be ignored.

portable_device_top specifies the folder on the device that is writable
by NetHack and as such it cannot be the same folder that the executable
resides in.

i:\nhdist\nethack --showpaths
Variable playground locations:
    [hackdir   ]="i:\nethack\"
    [leveldir  ]="i:\nethack\"
    [savedir   ]="i:\nethack\"
    [bonesdir  ]="i:\nethack\"
    [datadir   ]="i:\nhdist\"
    [scoredir  ]="i:\nethack\"
    [lockdir   ]="i:\nethack\"
    [sysconfdir]="i:\nhdist\"
    [configdir ]="i:\nethack\"
    [troubledir]="i:\nethack\"
NetHack's system configuration file (in sysconfdir):
    "i:\nhdist\sysconf"
The loadable symbols file (in sysconfdir):
    "i:\nhdist\symbols"
Basic data files (in datadir) are collected inside:
    "i:\nhdist\nhdat363"
No end-of-game disclosure file (disabled).
Writable folder for portable device config (sysconf portable_device_top):
    "i:\nethack\"
Your personal configuration file (in configdir):
    "i:\nethack\.nethackrc"

Without that sysconf file in the NetHack distribution folder on the
USB stick with the 'portable_device_top = '  entry, the paths
return to the default locations for 3.6.3 on Windows:

i:\nhdist\nethack --showpaths
Variable playground locations:
    [hackdir   ]="C:\Users\JaneDoe\NetHack\3.6\"
    [leveldir  ]="C:\Users\JaneDoe\AppData\Local\NetHack\3.6\"
    [savedir   ]="C:\Users\JaneDoe\AppData\Local\NetHack\3.6\"
    [bonesdir  ]="C:\ProgramData\NetHack\3.6\"
    [datadir   ]="i:\nhdist\"
    [scoredir  ]="C:\ProgramData\NetHack\3.6\"
    [lockdir   ]="C:\ProgramData\NetHack\3.6\"
    [sysconfdir]="C:\ProgramData\NetHack\3.6\"
    [configdir ]="C:\Users\JaneDoe\NetHack\"
    [troubledir]="C:\Users\JaneDoe\NetHack\3.6\"
NetHack's system configuration file (in sysconfdir):
    "C:\ProgramData\NetHack\3.6\sysconf"
The loadable symbols file (in sysconfdir):
    "C:\ProgramData\NetHack\3.6\symbols"
Basic data files (in datadir) are collected inside:
    "i:\nhdist\nhdat363"
No end-of-game disclosure file (disabled).
Your personal configuration file (in configdir):
    "C:\Users\JaneDoe\NetHack\.nethackrc"
2019-12-17 00:41:55 -05:00
nhmall c53beb820f Merge branch 'NetHack-3.6' 2019-12-04 17:13:01 -05:00
nhmall 4868f83db1 more self-recover prompting cleanup (tty) 2019-12-04 13:10:12 -05:00
nhmall 16316f8363 Merge branch 'NetHack-3.6' 2019-12-03 23:41:13 -05:00
nhmall 5c57804a97 fix self-recover prompting on windows
the prompting on Windows wasn't working correctly if a prior game had crashed
and the self-recover feature was trying to kick in. This impacts tty, curses,
and mswin (GUI).
2019-12-03 23:32:12 -05:00
nhmall 3545374e9c internal self-recover fix and bones name buffers 2019-11-21 23:41:11 -05:00
nhmall 4a8b9ee26c merge fix 2019-11-18 19:21:50 -05:00
nhmall 47fb8e5c0e Merge branch 'NetHack-3.6' 2019-11-18 19:20:55 -05:00
nhmall 893fa4efa8 update nhusage output on Windows 2019-11-18 19:20:03 -05:00
nhmall 9470138324 Merge branch 'NetHack-3.6' 2019-11-13 01:08:33 -05:00
nhmall 2359a9820e prototype fix after Windows gcc complaint 2019-11-11 18:12:39 -05:00
nhmall 900a826e8e Merge branch 'NetHack-3.6' 2019-11-11 14:32:09 -05:00
nhmall 6dfbff9d4b --showpaths wasn't returning the paths if there was an error in a config file
Also,
Windows only: Introduces some environment variable substitution for paths
specified in a config file
2019-11-11 12:49:54 -05:00
nhmall bc69fc65d2 Merge branch 'NetHack-3.6' into bart-test 2019-11-11 11:27:50 -05:00
nhmall afec87a766 Merge branch 'NetHack-3.6' 2019-11-09 12:24:10 -05:00
nhmall c566c01f8d add command line option --showpaths
Add
	--showpaths
early option to show where NetHack is expecting to find certain files
without starting up a game. It exits afterwards.

Windows sample (for illustration only, locations may differ for you):
    Variable playground locations:
        [hackdir   ]="C:\Users\JohnDoe\NetHack\3.6\"
        [leveldir  ]="C:\Users\JohnDoe\AppData\Local\NetHack\3.6\"
        [savedir   ]="C:\Users\JohnDoe\AppData\Local\NetHack\3.6\"
        [bonesdir  ]="C:\ProgramData\NetHack\3.6\"
        [datadir   ]="C:\personal\nhdev\363\test\binary\"
        [scoredir  ]="C:\ProgramData\NetHack\3.6\"
        [lockdir   ]="C:\ProgramData\NetHack\3.6\"
        [sysconfdir]="C:\ProgramData\NetHack\3.6\"
        [configdir ]="C:\Users\JohnDoe\NetHack\3.6\"
        [troubledir]="C:\Users\JohnDoe\NetHack\3.6\"
    Your system configuration file (in sysconfdir):
        "C:\Users\JohnDoe\NetHack\3.6\sysconf"
    Your system symbols file (in sysconfdir):
        "C:\Users\JohnDoe\NetHack\3.6\symbols"
    Your personal configuration file (in configdir):
        "C:\Users\JohnDoe\NetHack\3.6\.nethackrc"

Linux (for illustration only, locations may differ for you):
    Your system configuration file:
        "/home/johndoe/nh/install/games/lib/nethackdir/sysconf"
    Your system symbols file:
        "/home/johndoe/nh/install/games/lib/nethackdir/symbols"
    Your personal configuration file:
        "/home/johndoe/.nethackrc"
2019-11-09 10:57:25 -05:00
nhmall c675b234d8 Merge branch 'NetHack-3.6' 2019-11-06 16:52:25 -05:00
nhmall e3b69ccc43 buffer size 2019-11-06 16:51:47 -05:00
nhmall 0494152aea Merge branch 'NetHack-3.6' 2019-11-06 16:45:43 -05:00
nhmall 88f1d2f365 don't hardcode the version id in windmain 2019-11-06 16:44:25 -05:00
Bart House d4ff00cd40 Updated windows directory paths to latest iteration of design. 2019-11-04 19:34:03 -08:00
Bart House 7c5a2adfa5 Lock TROUBLEPREFIX after parsing sysconf. 2019-11-03 14:07:11 -08:00
Bart House f0707fee6e More tweaks to how windows deals with directory paths. 2019-11-03 13:31:17 -08:00
nhmall ffec86b244 Merge branch 'NetHack-3.6' 2019-11-02 22:53:46 -04:00
Bart House 11018da6b8 Renamed configuration file for windows to .nethackrc.
Also adjusted name of template files populated during windows builds.
2019-11-02 19:11:26 -07:00
Bart House 4e11038871 Merge branch 'NetHack-3.6' 2019-11-02 11:40:19 -07:00
Bart House 33149eed0e Move is_desktop_bridge() api to win10 wrapper. 2019-11-02 11:39:11 -07:00
nhmall 6d385661c0 Merge branch 'NetHack-3.6' 2019-11-02 01:58:32 -04:00
nhmall 3587d8aee9 bump Windows supported version in mingw-w64 sys/winnt/Makefile.gcc
mingw-w64 sys/winnt/Makefile.gcc required a Windows version bump from
0x0501 to 0x0601 (XP level to Windows 7 level) during compile in
order for the mingw system header files to include some of the
needed support for recent Windows port changes.
2019-11-02 01:03:02 -04:00
nhmall 4b163e3d55 Revert "quiet a mingw warning"
This reverts commit e33dfed456.
2019-11-01 16:33:04 -04:00
Bart House d9d47c120b Merge branch 'NetHack-3.6' 2019-10-31 20:46:54 -07:00
nhmall e33dfed456 quiet a mingw warning 2019-10-31 19:43:59 -04:00
nhmall b377771849 Merge branch 'NetHack-3.6' 2019-10-31 12:26:27 -04:00
Bart House 86473526b8 Save a copy of the symbols file to symbols.save when updating. 2019-10-30 19:17:03 -07:00
nhmall 61fe703331 Merge branch 'NetHack-3.6' 2019-10-30 20:22:48 -04:00
nhmall 33d00cf0e4 attempt to get mingw building correctly after recent changes
make typedef of boolean match mingw header files
link with shell32 and ole32 as Makefile.msc now had to do
kludge some stuff missing from mingw headers in sys/winnt/windmain.c
2019-10-30 18:48:28 -04:00
nhmall 2eab66617d Merge branch 'NetHack-3.6' 2019-10-30 13:21:20 -04:00
Bart House 43ef5ef7fa Windows Store support for NetHack 3.6. 2019-10-29 21:28:39 -07:00
Bart House 97ca83fd02 Merge branch 'master' into NetHack-3.7
# Conflicts:
#	src/pline.c
#	sys/winnt/windmain.c
#	win/tty/topl.c
#	win/win32/scripts/fuzzer/longtest.bat
#	win/win32/scripts/fuzzer/restore.bat
#	win/win32/scripts/fuzzer/runtill.bat
2019-07-14 23:50:54 -07:00
Bart House cd1b650fb7 Merge branch 'NetHack-3.6'
# Conflicts:
#	DEVEL/Developer.txt
#	include/config.h
#	include/decl.h
#	include/display.h
#	include/extern.h
#	include/global.h
#	include/hack.h
#	include/patchlevel.h
#	src/display.c
#	src/dothrow.c
#	src/makemon.c
#	src/monst.c
#	src/objnam.c
#	src/sp_lev.c
#	src/wield.c
#	src/zap.c
#	sys/share/pmatchregex.c
#	sys/winnt/Makefile.msc
2019-07-14 23:36:56 -07:00
Bart House 4c1c247028 Revert "Fuzzer improvements."
This reverts commit 435f1c4626.
2019-07-14 21:10:39 -07:00
nhmall bd9709ad77 remove STATIC_DCL, STATIC_OVL, STATIC_VAR, STATIC_PTR 2019-07-14 18:15:49 -04:00