diff --git a/doc/fixes36.2 b/doc/fixes36.2 index fe465e3e9..e71bfd09a 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.273 $ $NHDT-Date: 1552425075 2019/03/12 21:11:15 $ +$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.274 $ $NHDT-Date: 1552521022 2019/03/13 23:50:22 $ 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, @@ -478,6 +478,7 @@ curses: when getting multi-character responses from player, support as well as to remove last character entered; also, return to core if ESC is typed when there is no input entered curses: extend preceding support to typing of extended command names +curses: support hilite_pet and hilite_pile even when color is disabled vms: add compile of isaac64.c to Makefile.src and vmsbuild.com diff --git a/include/ntconf.h b/include/ntconf.h index 2abaf80a2..c8a960bed 100644 --- a/include/ntconf.h +++ b/include/ntconf.h @@ -98,7 +98,6 @@ extern void FDECL(interject, (int)); #ifdef strcasecmp #undef strcasecmp #endif -extern void FDECL(nethack_exit, (int)); extern void NDECL(getlock); #endif @@ -281,5 +280,5 @@ extern void FDECL(nhassert_failed, (const char * exp, const char * file, #endif #define nethack_enter(argc, argv) nethack_enter_winnt() - +extern void FDECL(nethack_exit, (int)) NORETURN; #endif /* NTCONF_H */ diff --git a/include/wincurs.h b/include/wincurs.h index ddf026483..549ce9ae0 100644 --- a/include/wincurs.h +++ b/include/wincurs.h @@ -163,7 +163,7 @@ extern void curses_view_file(const char *filename, boolean must_exist); extern void curses_rtrim(char *str); extern int curses_get_count(int first_digit); extern int curses_convert_attr(int attr); -extern int curses_read_attrs(char *attrs); +extern int curses_read_attrs(const char *attrs); extern char *curses_fmt_attrs(char *); extern int curses_convert_keys(int key); extern int curses_get_mouse(int *mousex, int *mousey, int *mod); diff --git a/src/end.c b/src/end.c index 08109b05d..8736b66ef 100644 --- a/src/end.c +++ b/src/end.c @@ -43,7 +43,7 @@ STATIC_DCL void NDECL(dump_plines); STATIC_DCL void FDECL(dump_everything, (int, time_t)); STATIC_DCL int NDECL(num_extinct); -#if defined(__BEOS__) || defined(MICRO) || defined(WIN32) || defined(OS2) +#if defined(__BEOS__) || defined(MICRO) || defined(OS2) extern void FDECL(nethack_exit, (int)); #else #define nethack_exit exit diff --git a/src/options.c b/src/options.c index 83fade776..9372a5c7f 100644 --- a/src/options.c +++ b/src/options.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 options.c $NHDT-Date: 1551222973 2019/02/26 23:16:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.356 $ */ +/* NetHack 3.6 options.c $NHDT-Date: 1552521022 2019/03/13 23:50:22 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.357 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2008. */ /* NetHack may be freely redistributed. See license for details. */ @@ -28,7 +28,7 @@ NEARDATA struct instance_flags iflags; /* provide linkage */ #endif #ifdef CURSES_GRAPHICS -extern int curses_read_attrs(char *attrs); +extern int curses_read_attrs(const char *attrs); extern char *curses_fmt_attrs(char *); #endif @@ -4020,7 +4020,6 @@ boolean tinitial, tfrom_file; } else if (boolopt[i].addr == &flags.showrace || boolopt[i].addr == &iflags.use_inverse || boolopt[i].addr == &iflags.hilite_pile - || boolopt[i].addr == &iflags.hilite_pet || boolopt[i].addr == &iflags.perm_invent #ifdef CURSES_GRAPHICS || boolopt[i].addr == &iflags.cursesgraphics @@ -4028,6 +4027,16 @@ boolean tinitial, tfrom_file; || boolopt[i].addr == &iflags.wc_ascii_map || boolopt[i].addr == &iflags.wc_tiled_map) { g.opt_need_redraw = TRUE; + } else if (boolopt[i].addr == &iflags.hilite_pet) { +#ifdef CURSES_GRAPHICS + if (WINDOWPORT("curses")) { + /* if we're enabling hilite_pet and petattr isn't set, + set it to Inverse; if we're disabling, leave petattr + alone so that re-enabling will get current value back */ + if (iflags.hilite_pet && !iflags.wc2_petattr) + iflags.wc2_petattr = curses_read_attrs("I"); + } +#endif #ifdef STATUS_HILITES } else if (boolopt[i].addr == &iflags.wc2_hitpointbar) { status_initialize(REASSESS_ONLY); diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index 9813b22a2..1f1272ab4 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -90,8 +90,8 @@ TARGET_CPU=x86 # of your PDCurses C files which must already be resident on # your machine. # -ADD_CURSES=Y -PDCURSES_TOP=../../pdcurses +#ADD_CURSES=Y +#PDCURSES_TOP=../../pdcurses #4b Qt # diff --git a/sys/winnt/nhraykey.c b/sys/winnt/nhraykey.c index a1f7af3ca..aafe9c44c 100644 --- a/sys/winnt/nhraykey.c +++ b/sys/winnt/nhraykey.c @@ -461,6 +461,7 @@ int __declspec(dllexport) __stdcall CheckInput(hConIn, ir, count, numpad, HANDLE hConIn; INPUT_RECORD *ir; DWORD *count; +int mode; int *mod; boolean numpad; coord *cc; diff --git a/win/X11/winX.c b/win/X11/winX.c index ffc9558e0..4aaebf7f2 100644 --- a/win/X11/winX.c +++ b/win/X11/winX.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 winX.c $NHDT-Date: 1552422652 2019/03/12 20:30:52 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.72 $ */ +/* NetHack 3.6 winX.c $NHDT-Date: 1552441031 2019/03/13 01:37:11 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.73 $ */ /* Copyright (c) Dean Luick, 1992 */ /* NetHack may be freely redistributed. See license for details. */ @@ -1355,14 +1355,15 @@ int how; time_t when; { struct xwindow *wp; - FILE *rip_fp; + FILE *rip_fp = 0; check_winid(window); wp = &window_list[window]; - /* make sure the graphic_tombstone is available; it's not easy to - revert to ordinary text tombstone once we're past this point... */ - rip_fp = fopen(appResources.tombstone, "r"); /* "rip.xpm" */ + /* make sure the graphical tombstone is available; it's not easy to + revert to the ASCII-art text tombstone once we're past this point */ + if (appResources.tombstone && *appResources.tombstone) + rip_fp = fopen(appResources.tombstone, "r"); /* "rip.xpm" */ if (!rip_fp) { genl_outrip(window, how, when); return; diff --git a/win/curses/cursdial.c b/win/curses/cursdial.c index 12d6eb52f..694bd2e0a 100644 --- a/win/curses/cursdial.c +++ b/win/curses/cursdial.c @@ -10,10 +10,10 @@ #include "func_tab.h" #include -#if defined(FILENAME_CMP) +#if defined(FILENAME_CMP) && !defined(strcasecmp) #define strcasecmp FILENAME_CMP #endif -#if defined(STRNCMPI) +#if defined(STRNCMPI) && !defined(strncasecmp) #define strncasecmp strncmpi #endif diff --git a/win/curses/cursmain.c b/win/curses/cursmain.c index f321a2ebb..ccae4b439 100644 --- a/win/curses/cursmain.c +++ b/win/curses/cursmain.c @@ -358,8 +358,7 @@ putstr(window, attr, str) -- Print str on the window with the given attribute. Only printable ASCII characters (040-0126) must be supported. Multiple putstr()s are output on separate lines. -Attributes - can be one of + Attributes can be one of ATR_NONE (or 0) ATR_ULINE ATR_BOLD @@ -616,7 +615,10 @@ curses_print_glyph(winid wid, XCHAR_P x, XCHAR_P y, int glyph, } else */ if ((special & MG_OBJPILE) && iflags.hilite_pile) { - color = 16 + (color * 2) + 1; + if (iflags.wc_color) + color = 16 + (color * 2) + 1; + else + attr = A_REVERSE; } } diff --git a/win/curses/cursmisc.c b/win/curses/cursmisc.c index 704cce471..32fe4ff8d 100644 --- a/win/curses/cursmisc.c +++ b/win/curses/cursmisc.c @@ -81,19 +81,22 @@ curses_read_char() /* Turn on or off the specified color and / or attribute */ void -curses_toggle_color_attr(WINDOW * win, int color, int attr, int onoff) +curses_toggle_color_attr(WINDOW *win, int color, int attr, int onoff) { #ifdef TEXTCOLOR int curses_color; - /* Map color disabled */ - if ((!iflags.wc_color) && (win == mapwin)) { - return; - } - - /* GUI color disabled */ - if ((!iflags.wc2_guicolor) && (win != mapwin)) { + /* if color is disabled, just show attribute */ + if ((win == mapwin) ? !iflags.wc_color : !iflags.wc2_guicolor) { +#endif + if (attr != NONE) { + if (onoff == ON) + wattron(win, attr); + else + wattroff(win, attr); + } return; +#ifdef TEXTCOLOR } if (color == 0) { /* make black fg visible */ @@ -149,6 +152,8 @@ curses_toggle_color_attr(WINDOW * win, int color, int attr, int onoff) wattroff(win, attr); } } +#else + nhUse(color); #endif /* TEXTCOLOR */ } @@ -685,7 +690,7 @@ curses_convert_attr(int attr) success (might be 0), or -1 if not found. */ int -curses_read_attrs(char *attrs) +curses_read_attrs(const char *attrs) { int retattr = 0; diff --git a/win/curses/cursmisc.h b/win/curses/cursmisc.h index 392d67d11..c964878af 100644 --- a/win/curses/cursmisc.h +++ b/win/curses/cursmisc.h @@ -26,7 +26,7 @@ void curses_view_file(const char *filename, boolean must_exist); void curses_rtrim(char *str); int curses_get_count(int first_digit); int curses_convert_attr(int attr); -int curses_read_attrs(char *attrs); +int curses_read_attrs(const char *attrs); char *curses_fmt_attrs(char *); int curses_convert_keys(int key); int curses_get_mouse(int *mousex, int *mousey, int *mod); diff --git a/win/share/safeproc.c b/win/share/safeproc.c index 671ee1822..ab5cb1c5a 100644 --- a/win/share/safeproc.c +++ b/win/share/safeproc.c @@ -380,10 +380,10 @@ safe_status_init() return; } -void +boolean safe_can_suspend() { - return; + return FALSE; } void @@ -408,7 +408,7 @@ char def; } /*ARGSUSED*/ -static void +void safe_getlin(prompt, outbuf) const char *prompt UNUSED; char *outbuf;