curses follow-up bits

Move the curses global variable defininitions to cursmain.c.

Make the references to those global variables extern in
include/wincurs.h

Get rid of a warning:
../win/curses/cursmesg.c:379:9: warning: declaration shadows a
variable in the global scope [-Wshadow] int orig_cursor = curs_set(0);

Kludge for Visual Studio compiler: Add a stub- file for use
in Windows curses port builds to ensure that a needed #pragma
is invoked prior to compiling the file pdcscrn.c in the
PDCurses source distribution. All command line options and
compile of the file. It is unreasonable to expect a NetHack
builder to have to tinker with the PDCurses source files in
order to build NetHack. This kludge means the NetHack builder
doesn't have to.
The file stub-pdcscrn.c contains only two lines:
	#pragma warning(disable : 4996)
	#include "pdcscrn.c"
Some day, if the PDCurses sources corrects the issue, this
can go away.
This commit is contained in:
nhmall
2018-11-30 16:00:24 -05:00
parent 75bf7c1975
commit 8a9f98f179
5 changed files with 43 additions and 20 deletions
+5 -10
View File
@@ -7,16 +7,11 @@
/* Global declarations for curses interface */ /* Global declarations for curses interface */
int term_rows, term_cols; /* size of underlying terminal */ extern int term_rows, term_cols; /* size of underlying terminal */
extern int orig_cursor; /* Preserve initial cursor state */
WINDOW *base_term; /* underlying terminal window */ extern WINDOW *base_term; /* underlying terminal window */
extern boolean counting; /* Count window is active */
WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */ extern WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
int orig_cursor; /* Preserve initial cursor state */
boolean counting; /* Count window is active */
#define TEXTCOLOR /* Allow color */ #define TEXTCOLOR /* Allow color */
#define NHW_END 19 #define NHW_END 19
+11 -8
View File
@@ -73,8 +73,8 @@ DEBUGINFO = Y
# PDCurses header (.h) files and PDCURSES_C to the location # PDCurses header (.h) files and PDCURSES_C to the location
# of your PDCurses C files. # of your PDCurses C files.
# #
#ADD_CURSES=Y ADD_CURSES=Y
#PDCURSES_TOP=..\..\pdcurses PDCURSES_TOP=..\..\pdcurses
# #
#============================================================================== #==============================================================================
# This marks the end of the BUILD DECISIONS section. # This marks the end of the BUILD DECISIONS section.
@@ -399,7 +399,7 @@ PDCLIBOBJS = $(O)addch.o $(O)addchstr.o $(O)addstr.o $(O)attr.o $(O)beep.o
PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \ PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \
$(O)pdcsetsc.o $(O)pdcutil.o $(O)pdcsetsc.o $(O)pdcutil.o
PDCLIB = $(O)\pdcurses.lib PDCLIB = $(O)pdcurses.lib
PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON) PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON)
@@ -1257,16 +1257,19 @@ $(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
$(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h $(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
@$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c @$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
#========================================== #===============================================================================
# PDCurses # PDCurses
#========================================== #===============================================================================
$(O)\pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS) $(O)pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS) lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS)
#========================================== $(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscrn.c
$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
#===============================================================================
# Housekeeping # Housekeeping
#========================================== #===============================================================================
spotless: clean spotless: clean
! IF ("$(OBJ)"!="") ! IF ("$(OBJ)"!="")
+15
View File
@@ -0,0 +1,15 @@
/*
* Use this stub to insert a needed pragma prior
* to compiling $(PDCWINCON)\pdcscrn.c in the
* PDCurses distribution.
*
* We don't want to ask NetHack builders to
* modify the PDCurses distribution in any way,
* we only ask that they have the original intact
* PDCurses source tree available during the build.
*
*/
#pragma warning(disable : 4996)
#include "pdcscrn.c"
+10
View File
@@ -80,6 +80,16 @@ struct window_procs curses_procs = {
genl_can_suspend_yes, genl_can_suspend_yes,
}; };
/*
* Global variables for curses interface
*/
int term_rows, term_cols; /* size of underlying terminal */
int orig_cursor; /* Preserve initial cursor state */
WINDOW *base_term; /* underlying terminal window */
boolean counting; /* Count window is active */
WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
/* Track if we're performing an update to the permanent window. /* Track if we're performing an update to the permanent window.
Needed since we aren't using the normal menu functions to handle Needed since we aren't using the normal menu functions to handle
the inventory window. */ the inventory window. */
+2 -2
View File
@@ -371,12 +371,12 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
char *tmpstr; /* for free() */ char *tmpstr; /* for free() */
int maxy, maxx; /* linewrap / scroll */ int maxy, maxx; /* linewrap / scroll */
int ch; int ch;
WINDOW *win = curses_get_nhwin(MESSAGE_WIN); WINDOW *win = curses_get_nhwin(MESSAGE_WIN);
int border_space = 0; int border_space = 0;
int len = 0; /* of answer string */ int len = 0; /* of answer string */
boolean border = curses_window_has_border(MESSAGE_WIN); boolean border = curses_window_has_border(MESSAGE_WIN);
int orig_cursor = curs_set(0);
orig_cursor = curs_set(0);
curses_get_window_size(MESSAGE_WIN, &height, &width); curses_get_window_size(MESSAGE_WIN, &height, &width);
if (border) { if (border) {