From 5258bb0ed4a725f952f4f10b896b807bce1b7c21 Mon Sep 17 00:00:00 2001 From: nhmall Date: Tue, 9 Apr 2019 00:35:02 -0400 Subject: [PATCH 1/3] adjust for recently released MS Visual Studio 2019 win\curses\cursstat.c(886) : error C4703: potentially uninitialized local pointer variable 'p' used --- sys/winnt/Install.nt | 15 ++++++++++++--- sys/winnt/Makefile.msc | 9 ++++----- sys/winnt/nhsetup.bat | 34 +++++++++++++++------------------- win/curses/cursstat.c | 2 +- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/sys/winnt/Install.nt b/sys/winnt/Install.nt index f3fe944fc..8842ad861 100644 --- a/sys/winnt/Install.nt +++ b/sys/winnt/Install.nt @@ -1,11 +1,11 @@ - Copyright (c) NetHack Development Team 1990-2018 + Copyright (c) NetHack Development Team 1990-2019 NetHack may be freely redistributed. See license for details. ============================================================== Instructions for compiling and installing NetHack 3.6 on a Windows system (Windows 7/8.x/10 or later only. XP may work but is untested) ============================================================== - Last revision: $NHDT-Date: 1542545993 2018/11/18 12:59:53 $ + Last revision: $NHDT-Date: 1554784481 2019/04/09 04:34:41 $ Credit for the porting of NetHack to the Win32 Console Subsystem goes to the NT Porting Team started by Michael Allison. @@ -21,7 +21,8 @@ of the tty and graphical windows versions of NetHack 3.6.2. You can build a TTY version of NetHack and a Windows Graphical version. You can use one of the following build environments: - o A copy of Microsoft Visual Studio 2017 Community Edition + o A copy of Microsoft Visual Studio 2017 Community Edition or + a copy of Microsoft Visual Studio 2019 Community Edition OR @@ -65,6 +66,14 @@ of NetHack you wish to run. The Visual Studio 2017 NetHack solution file can be found here: win\win32\vs2017\NetHack.sln +You can use that same win\win32\vs2017\NetHack.sln with Visual Studio 2019, +but you may have to retarget the projects: + Windows SDK Version: 10.0.17763.0 [ There have been some reports of + difficulties if you instead choose + "10.0 (latest installed version)" ] + Platform Toolset: Upgrade to v142 + + Before executing the steps to build listed in the next paragraph, decide if you want to include optional curses window-port. See the note just below entitled "Optional curses window-port support." diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 74e585aff..fbd1e9a20 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -1,4 +1,4 @@ -# NetHack 3.6 Makefile.msc $NHDT-Date: 1550344504 2019/02/16 19:15:04 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.152 $ */ +# NetHack 3.6 Makefile.msc $NHDT-Date: 1554784482 2019/04/09 04:34:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.153 $ */ # Copyright (c) NetHack PC Development Team 1993-2019 # #============================================================================== @@ -7,9 +7,8 @@ # NetHack 3.6.x Makefile for MS Visual Studio Visual C++ compiler # # Visual Studio Compilers Tested: -# - Microsoft Visual Studio 2010 Express, with the Platform SDK -# - Microsoft Visual Studio 2013 Express # - Microsoft Visual Studio 2017 Community Edition +# - Microsoft Visual Studio 2019 Community Edition # #============================================================================== # This is used for building two versions of NetHack: @@ -464,8 +463,8 @@ ccommon= -c -nologo -D"_CONSOLE" -D"_CRT_NONSTDC_NO_DEPRECATE" -D"_CRT_SECURE_NO -DHAS_STDINT_H -DHAS_INLINE $(CURSESDEF) \ -EHsc -fp:precise -Gd -GF -GS -Gy \ $(CL_RECENT) -WX- -Zc:forScope -Zc:wchar_t -Zi -cdebug= -analyze- -D"_DEBUG" -Gm -MTd -RTC1 -Od -crelease= -analyze- -D"_MBCS" -errorReport:prompt -Gm- -MT -O2 -Ot -Ox -Oy +cdebug= -analyze- -D"_DEBUG" -MTd -RTC1 -Od +crelease= -analyze- -D"_MBCS" -errorReport:prompt -MT -O2 -Ot -Ox -Oy lcommon= /NOLOGO /INCREMENTAL:NO diff --git a/sys/winnt/nhsetup.bat b/sys/winnt/nhsetup.bat index da3fb9e9d..b34de2aaa 100755 --- a/sys/winnt/nhsetup.bat +++ b/sys/winnt/nhsetup.bat @@ -1,4 +1,4 @@ -@REM NetHack 3.6 nhsetup.bat $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.33 $ */ +@REM NetHack 3.6 nhsetup.bat $NHDT-Date: 1554784485 2019/04/09 04:34:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.37 $ */ @REM Copyright (c) NetHack PC Development Team 1993-2017 @REM NetHack may be freely redistributed. See license for details. @REM Win32 setup batch file, see Install.nt for details @@ -58,35 +58,31 @@ echo MinGW Makefile copied ok. echo Done copying files. +echo Checking version of VC++ installed... +:vscheck2019 +SET REGTREE=HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio +@REM i can see your house from here... or at least your VC++ folder +set VCDir="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\" +if not defined VCDir goto :vscheck2017 +if not exist %VCDir% goto :vscheck2017 +if not "%VSCMD_VER%"=="16.0.0" goto :vscheck2017 +set MSVCVERSION=2019 +set MSVCPROJ=2017 +goto :fallback + :vscheck2017 SET REGTREE=HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7 @REM i can see your house from here... or at least your VC++ folder -echo Checking version of VC++ installed... -echo Checking for VC2017 Community Edition... for /f "usebackq skip=2 tokens=1-2*" %%a IN (`reg query %REGTREE% /v 15.0`) do @set VCDir="%%c" if not defined VCDir goto :vscheck2015 if not exist %VCDir% goto :vscheck2015 set MSVCVERSION=2017 +set MSVCPROJ=2017 goto :fallback -:vscheck2015 -rem cannot use the registry trick used for vc2017 -rem 14 = 2015 -SET VCVERS=14 -rem Finally, let's determine the root folder for this VC installation. -set VCROOT=%%VS%VCVERS%0COMNTOOLS%% -if "%VCROOT:~-1%"=="\" set VCROOT=%VCROOT:~0,-1% -rem VCROOT=VSDir\Common7\Tools -call :dirname VCROOT "%VCROOT%" -rem VCROOT=VSDir\Common7 -call :dirname VCROOT "%VCROOT%" -rem VCROOT=VSDir -set VCDir=%VCROOT%\VC -SET MSVCVERSION=2015 - :fallback echo Using VS%MSVCVERSION%. -set SRCPATH=%WIN32PATH%\vs%MSVCVERSION% +set SRCPATH=%WIN32PATH%\vs%MSVCPROJ% echo NetHack VS%MSVCVERSION% project files are in %SRCPATH% goto :done diff --git a/win/curses/cursstat.c b/win/curses/cursstat.c index eac7c26c2..8b81839fe 100644 --- a/win/curses/cursstat.c +++ b/win/curses/cursstat.c @@ -680,7 +680,7 @@ boolean border; int i, fld, cap_and_hunger, time_and_score, cond_count; char *text; #ifdef STATUS_HILITES - char *p, savedch = '\0'; + char *p = 0, savedch = '\0'; int coloridx = NO_COLOR, attrmask = 0; #endif /* STATUS_HILITES */ int height_needed, height, width, x = 0, y = 0; From 730f9684ebd058e465c681c8fed38818302d306e Mon Sep 17 00:00:00 2001 From: nhmall Date: Tue, 9 Apr 2019 00:41:12 -0400 Subject: [PATCH 2/3] vs nhsetup bit --- sys/winnt/nhsetup.bat | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sys/winnt/nhsetup.bat b/sys/winnt/nhsetup.bat index b34de2aaa..a5c9ce75b 100755 --- a/sys/winnt/nhsetup.bat +++ b/sys/winnt/nhsetup.bat @@ -1,5 +1,5 @@ @REM NetHack 3.6 nhsetup.bat $NHDT-Date: 1554784485 2019/04/09 04:34:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.37 $ */ -@REM Copyright (c) NetHack PC Development Team 1993-2017 +@REM Copyright (c) NetHack PC Development Team 1993-2019 @REM NetHack may be freely redistributed. See license for details. @REM Win32 setup batch file, see Install.nt for details @REM @@ -80,6 +80,21 @@ set MSVCVERSION=2017 set MSVCPROJ=2017 goto :fallback +:vscheck2015 +rem cannot use the registry trick used for vc2017 +rem 14 = 2015 +SET VCVERS=14 +rem Finally, let's determine the root folder for this VC installation. +set VCROOT=%%VS%VCVERS%0COMNTOOLS%% +if "%VCROOT:~-1%"=="\" set VCROOT=%VCROOT:~0,-1% +rem VCROOT=VSDir\Common7\Tools +call :dirname VCROOT "%VCROOT%" +rem VCROOT=VSDir\Common7 +call :dirname VCROOT "%VCROOT%" +rem VCROOT=VSDir +set VCDir=%VCROOT%\VC +SET MSVCVERSION=2015 + :fallback echo Using VS%MSVCVERSION%. set SRCPATH=%WIN32PATH%\vs%MSVCPROJ% From 24d09e64a3ae09c3bc28eb5000677a047184b6ea Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 9 Apr 2019 13:16:54 -0700 Subject: [PATCH 3/3] tty blink & dim attributes Enable blink and dim for the TERMLIB + !NO_TERMS configuration of the tty interface. Blink now works the same as in the curses interface for status highlights. The terminal emulator I'm using has an escape sequence for dim but it evidently doesn't do anything (same no effect as with curses), so that isn't adequately tested. --- doc/fixes36.2 | 3 +- win/tty/termcap.c | 86 +++++++++++++++++++++++++---------------------- 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/doc/fixes36.2 b/doc/fixes36.2 index f34840d67..f234f0776 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.299 $ $NHDT-Date: 1554580624 2019/04/06 19:57:04 $ +$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.300 $ $NHDT-Date: 1554841009 2019/04/09 20:16:49 $ This fixes36.2 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.1 in April 2018. Please note, however, @@ -574,6 +574,7 @@ tty: if eight_bit_tty option is set and current symbol set specifies DECgraphics handling, render line-drawing characters (in nethack's scheme, the 4th quarter of ASCII--mostly lower case letters--with 8th-bit forced on) instead of treating that subset as 8-bit characters +tty: enable blink attribute for status highlights (TERMLIB + !NO_TERMS config) unix: Makefile.src and Makefile.utl inadvertently relied on a 'gnu make' extension when using $(VERBOSEMAKE) to reduce build-time feedback; replace with $(QUIETCC) which operates the same but defaults to diff --git a/win/tty/termcap.c b/win/tty/termcap.c index ead39d228..ca1e08b02 100644 --- a/win/tty/termcap.c +++ b/win/tty/termcap.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 termcap.c $NHDT-Date: 1553858473 2019/03/29 11:21:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.29 $ */ +/* NetHack 3.6 termcap.c $NHDT-Date: 1554841008 2019/04/09 20:16:48 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.30 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Pasi Kallinen, 2018. */ /* NetHack may be freely redistributed. See license for details. */ @@ -36,18 +36,10 @@ struct tc_lcl_data tc_lcl_data = { 0, 0, 0, 0, 0, 0, 0, FALSE }; STATIC_VAR char *HO, *CL, *CE, *UP, *XD, *BC, *SO, *SE, *TI, *TE; STATIC_VAR char *VS, *VE; -STATIC_VAR char *ME; -STATIC_VAR char *MR; -#if 0 -STATIC_VAR char *MB, *MH; -STATIC_VAR char *MD; /* may already be in use below */ -#endif +STATIC_VAR char *ME, *MR, *MB, *MH, *MD; #ifdef TERMLIB boolean dynamic_HIHE = FALSE; -#ifdef TEXTCOLOR -STATIC_VAR char *MD; -#endif STATIC_VAR int SG; STATIC_OVL char PC = '\0'; STATIC_VAR char tbuf[512]; @@ -177,7 +169,7 @@ int *wid, *hgt; Sprintf(hilites[i], "\033[0;3%dm", i); } } -#endif +#endif /* TEXTCOLOR */ *wid = CO; *hgt = LI; CL = "\033[2J"; /* last thing set */ @@ -284,14 +276,12 @@ int *wid, *hgt; KS = Tgetstr("ks"); /* keypad start (special mode) */ KE = Tgetstr("ke"); /* keypad end (ordinary mode [ie, digits]) */ MR = Tgetstr("mr"); /* reverse */ -#if 0 MB = Tgetstr("mb"); /* blink */ MD = Tgetstr("md"); /* boldface */ MH = Tgetstr("mh"); /* dim */ -#endif ME = Tgetstr("me"); /* turn off all attributes */ - if (!ME || (SE == nullstr)) - ME = SE; /* default to SE value */ + if (!ME) + ME = SE ? SE : nullstr; /* default to SE value */ /* Get rid of padding numbers for nh_HI and nh_HE. Hope they * aren't really needed!!! nh_HI and nh_HE are outputted to the @@ -309,9 +299,6 @@ int *wid, *hgt; AS = Tgetstr("as"); AE = Tgetstr("ae"); nh_CD = Tgetstr("cd"); -#ifdef TEXTCOLOR - MD = Tgetstr("md"); -#endif #ifdef TEXTCOLOR #if defined(TOS) && defined(__GNUC__) if (!strcmp(term, "builtin") || !strcmp(term, "tw52") @@ -849,8 +836,7 @@ cl_eos() /* free after Robert Viduya */ #undef delay_output #undef TRUE #undef FALSE -#define m_move curses_m_move /* Some curses.h decl m_move(), not used here \ - */ +#define m_move curses_m_move /* Some curses.h decl m_move(), not used here */ #include @@ -932,6 +918,7 @@ init_hilite() c = 6; while (c--) { char *work; + scratch = tparm(setf, ti_map[c].ti_color); work = (char *) alloc(strlen(scratch) + md_len + 1); Strcpy(work, MD); @@ -1171,19 +1158,30 @@ s_atr2str(n) int n; { switch (n) { + case ATR_BLINK: case ATR_ULINE: - if (nh_US) - return nh_US; + if (n == ATR_BLINK) { + if (MB && *MB) + return MB; + } else { /* Underline */ + if (nh_US && *nh_US) + return nh_US; + } /*FALLTHRU*/ case ATR_BOLD: - case ATR_BLINK: -#if defined(TERMLIB) && defined(TEXTCOLOR) - if (MD) + if (MD && *MD) return MD; -#endif - return nh_HI; + if (nh_HI && *nh_HI) + return nh_HI; + break; case ATR_INVERSE: - return MR; + if (MR && *MR) + return MR; + break; + case ATR_DIM: + if (MH && *MH) + return MH; + break; } return nulstr; } @@ -1194,14 +1192,19 @@ int n; { switch (n) { case ATR_ULINE: - if (nh_UE) + if (nh_UE && *nh_UE) return nh_UE; /*FALLTHRU*/ case ATR_BOLD: case ATR_BLINK: - return nh_HE; + if (nh_HE && *nh_HE) + return nh_HE; + /*FALLTHRU*/ + case ATR_DIM: case ATR_INVERSE: - return ME; + if (ME && *ME) + return ME; + break; } return nulstr; } @@ -1213,18 +1216,19 @@ term_attr_fixup(msk) int msk; { /* underline is converted to bold if its start sequence isn't available */ - if ((msk & (1 << ATR_ULINE)) && !nh_US) { + if ((msk & (1 << ATR_ULINE)) && (!nh_US || !*nh_US)) { msk |= (1 << ATR_BOLD); msk &= ~(1 << ATR_ULINE); } - /* blink is converted to bold unconditionally [why?] */ - if (msk & (1 << ATR_BLINK)) { + /* blink used to be converted to bold unconditionally; now depends on MB */ + if (msk & (1 << ATR_BLINK) && (!MB || !*MB)) { msk |= (1 << ATR_BOLD); msk &= ~(1 << ATR_BLINK); } - /* dim is ignored */ - if (msk & (1 << ATR_DIM)) + /* dim is ignored if its start sequence isn't available */ + if (msk & (1 << ATR_DIM) && (!MH || !*MH)) { msk &= ~(1 << ATR_DIM); + } return msk; } @@ -1235,8 +1239,8 @@ int attr; if (attr) { const char *astr = s_atr2str(attr); - if (*astr) - xputs(s_atr2str(attr)); + if (astr && *astr) + xputs(astr); } } @@ -1247,8 +1251,8 @@ int attr; if (attr) { const char *astr = e_atr2str(attr); - if (*astr) - xputs(e_atr2str(attr)); + if (astr && *astr) + xputs(astr); } } @@ -1317,6 +1321,6 @@ int color; #endif /* TEXTCOLOR */ -#endif /* TTY_GRAPHICS */ +#endif /* TTY_GRAPHICS && !NO_TERMS */ /*termcap.c*/