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.
/* Global declarations for curses interface */
-int term_rows, term_cols; /* size of underlying terminal */
-
-WINDOW *base_term; /* underlying terminal window */
-
-WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
-
-int orig_cursor; /* Preserve initial cursor state */
-
-boolean counting; /* Count window is active */
-
+extern int term_rows, term_cols; /* size of underlying terminal */
+extern int orig_cursor; /* Preserve initial cursor state */
+extern WINDOW *base_term; /* underlying terminal window */
+extern boolean counting; /* Count window is active */
+extern WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
#define TEXTCOLOR /* Allow color */
#define NHW_END 19
# PDCurses header (.h) files and PDCURSES_C to the location
# of your PDCurses C files.
#
-#ADD_CURSES=Y
-#PDCURSES_TOP=..\..\pdcurses
+ADD_CURSES=Y
+PDCURSES_TOP=..\..\pdcurses
#
#==============================================================================
# This marks the end of the BUILD DECISIONS section.
PDCOBJS = $(O)pdcclip.o $(O)pdcdisp.o $(O)pdcgetsc.o $(O)pdckbd.o $(O)pdcscrn.o \
$(O)pdcsetsc.o $(O)pdcutil.o
-PDCLIB = $(O)\pdcurses.lib
+PDCLIB = $(O)pdcurses.lib
PDCINCL = /I$(PDCURSES_TOP) /I$(PDCSRC) /I$(PDCWINCON)
$(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
-#==========================================
+#===============================================================================
# PDCurses
-#==========================================
+#===============================================================================
-$(O)\pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
+$(O)pdcurses.lib : $(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
-#==========================================
+#===============================================================================
spotless: clean
! IF ("$(OBJ)"!="")
--- /dev/null
+/*
+ * 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"
+
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.
Needed since we aren't using the normal menu functions to handle
the inventory window. */
char *tmpstr; /* for free() */
int maxy, maxx; /* linewrap / scroll */
int ch;
-
WINDOW *win = curses_get_nhwin(MESSAGE_WIN);
int border_space = 0;
int len = 0; /* of answer string */
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);
if (border) {