diff --git a/include/extern.h b/include/extern.h index 8a4c66ccb..e6939d7a1 100644 --- a/include/extern.h +++ b/include/extern.h @@ -2098,6 +2098,7 @@ extern void consoletty_open(int); extern void consoletty_rubout(void); extern int tgetch(void); extern int console_poskey(coordxy *, coordxy *, int *); +void console_g_putch(int in_ch); extern void set_output_mode(int); extern void synch_cursor(void); extern void nethack_enter_consoletty(void); @@ -2302,7 +2303,14 @@ extern int getlock(void); extern const char *get_portable_device(void); #endif -/* ### pcsys.c ### */ +/* ### pcsys.c, windsys.c ### */ +#if defined(MICRO) || defined(WIN32) +ATTRNORETURN extern void nethack_exit(int) NORETURN; +#else +#define nethack_exit exit +#endif + +/* ### pcsys.c ### */ #if defined(MICRO) || defined(WIN32) extern void flushout(void); diff --git a/include/windconf.h b/include/windconf.h index 55b68dfa5..c3b6d4e05 100644 --- a/include/windconf.h +++ b/include/windconf.h @@ -268,7 +268,6 @@ extern int alternative_palette(char *); #endif #define nethack_enter(argc, argv) nethack_enter_windows() -ATTRNORETURN extern void nethack_exit(int) NORETURN; extern boolean file_exists(const char *); extern boolean file_newer(const char *, const char *); #ifndef SYSTEM_H diff --git a/include/wintty.h b/include/wintty.h index ec29c112b..97d439a89 100644 --- a/include/wintty.h +++ b/include/wintty.h @@ -129,6 +129,8 @@ struct tty_status_fields { #endif #define NHW_BASE (NHW_LAST_TYPE + 1) +/* external declarations */ + extern struct window_procs tty_procs; /* port specific variable declarations */ @@ -144,24 +146,53 @@ extern char defmorestr[]; /* default --more-- prompt */ /* port specific external function references */ /* ### getline.c ### */ + extern void xwaitforspace(const char *); /* ### termcap.c, video.c ### */ -extern void tty_startup(int *, int *); -#ifndef NO_TERMS -extern void tty_shutdown(void); -#endif -extern int xputc(int); -extern void xputs(const char *); -#if defined(SCREEN_VGA) || defined(SCREEN_8514) || defined(SCREEN_VESA) -extern void xputg(const glyph_info *, const glyph_info *); -#endif +/* + * TERM or NO_TERMS + * + * The tty windowport interface relies on lower-level support routines + * to actually manipulate the terminal/display. Those are the right place + * for doing strange and arcane things such as outputting escape sequences + * to select a color or whatever. wintty.c should concern itself with WHERE + * to put stuff in a window. + + * The TERM routines are found in: + * + * !NO_TERMS: termcap.c + * + * NO_TERMS: + * WINCON sys/windows/consoletty.c + * MSDOS sys/msdos/video.c + * + */ +extern void backsp(void); extern void cl_end(void); -extern void term_clear_screen(void); +extern void cl_eos(void); +extern void graph_on(void); +extern void graph_off(void); extern void home(void); extern void standoutbeg(void); extern void standoutend(void); +extern int term_attr_fixup(int); +extern void term_clear_screen(void); +extern void term_curs_set(int); +extern void term_end_attr(int attr); +extern void term_end_color(void); +extern void term_end_extracolor(void); +extern void term_end_raw_bold(void); +extern void term_start_attr(int attr); +extern void term_start_bgcolor(int color); +extern void term_start_color(int color); +extern void term_start_extracolor(uint32, uint16); +extern void term_start_raw_bold(void); +extern void term_startup(int *, int *); +extern void term_shutdown(void); +extern int xputc(int); +extern void xputs(const char *); #if 0 extern void revbeg(void); extern void boldbeg(void); @@ -169,29 +200,9 @@ extern void blinkbeg(void); extern void dimbeg(void); extern void m_end(void); #endif -extern void backsp(void); -extern void graph_on(void); -extern void graph_off(void); -extern void cl_eos(void); - -/* - * termcap.c (or facsimiles in other ports) is the right place for doing - * strange and arcane things such as outputting escape sequences to select - * a color or whatever. wintty.c should concern itself with WHERE to put - * stuff in a window. - */ -extern int term_attr_fixup(int); -extern void term_start_attr(int attr); -extern void term_end_attr(int attr); -extern void term_start_raw_bold(void); -extern void term_end_raw_bold(void); - -extern void term_end_color(void); -extern void term_start_color(int color); -extern void term_start_bgcolor(int color); -extern void term_start_extracolor(uint32, uint16); -extern void term_end_extracolor(void); /* termcap.c, consoletty.c */ -extern void term_curs_set(int); +#if defined(SCREEN_VGA) || defined(SCREEN_8514) || defined(SCREEN_VESA) +extern void xputg(const glyph_info *, const glyph_info *); +#endif /* ### topl.c ### */ @@ -203,6 +214,7 @@ extern void update_topl(const char *); extern void putsyms(const char *); /* ### wintty.c ### */ + #ifdef CLIPPING extern void setclipped(void); #endif @@ -217,7 +229,7 @@ extern void g_pututf8(uint8 *); extern void erase_tty_screen(void); extern void win_tty_init(int); -/* external declarations */ +/* tty interface */ extern void tty_init_nhwindows(int *, char **); extern void tty_preference_update(const char *); extern void tty_player_selection(void); diff --git a/outdated/sys/mac/mttymain.c b/outdated/sys/mac/mttymain.c index 2cd59a9d2..1d1460df8 100644 --- a/outdated/sys/mac/mttymain.c +++ b/outdated/sys/mac/mttymain.c @@ -541,7 +541,7 @@ setftty(void) } void -tty_startup(int *width, int *height) +term_startup(int *width, int *height) { _mt_init_stuff(); *width = CO; diff --git a/src/end.c b/src/end.c index 1bacb7547..b4370f049 100644 --- a/src/end.c +++ b/src/end.c @@ -36,12 +36,6 @@ staticfn void fixup_death(int); staticfn int wordcount(char *); staticfn void bel_copy1(char **, char *); -#if defined(__BEOS__) || defined(MICRO) || defined(OS2) || defined(WIN32) -ATTRNORETURN extern void nethack_exit(int) NORETURN; -#else -#define nethack_exit exit -#endif - #define done_stopprint program_state.stopprint /* diff --git a/sys/msdos/pcvideo.h b/sys/msdos/pcvideo.h index dfd9fc1c2..7aeb453d1 100644 --- a/sys/msdos/pcvideo.h +++ b/sys/msdos/pcvideo.h @@ -55,6 +55,7 @@ #endif #define GETCURPOS 0x03 /* Get Cursor Position */ +#define SETCURTYP 0x01 /* Set Cursor Type */ #define GETMODE 0x0f /* Get Video Mode */ #define SETMODE 0x00 /* Set Video Mode */ #define SETPAGE 0x05 /* Set Video Page */ @@ -248,6 +249,8 @@ extern void txt_nhbell(void); extern void txt_startup(int *, int *); extern void txt_xputs(const char *, int, int); extern void txt_xputc(char, int); +extern void txt_hide_cursor(void); +extern void txt_show_cursor(void); /* ### vidvga.c ### */ @@ -258,6 +261,8 @@ extern void vga_clear_screen(int); extern void vga_cl_end(int, int); extern void vga_cl_eos(int); extern int vga_detect(void); +extern void vga_hide_cursor(void); +extern void vga_show_cursor(void); #ifdef SIMULATE_CURSOR extern void vga_DrawCursor(void); #endif @@ -273,7 +278,7 @@ extern void vga_HideCursor(void); #endif extern void vga_Init(void); extern void vga_tty_end_screen(void); -extern void vga_tty_startup(int *, int *); +extern void vga_term_startup(int *, int *); extern void vga_xputs(const char *, int, int); extern void vga_xputc(char, int); extern void vga_xputg(const glyph_info *, const glyph_info *); @@ -288,6 +293,8 @@ extern void vesa_clear_screen(int); extern void vesa_cl_end(int, int); extern void vesa_cl_eos(int); extern int vesa_detect(void); +extern void vesa_hide_cursor(void); +extern void vesa_show_cursor(void); #ifdef SIMULATE_CURSOR extern void vesa_DrawCursor(void); #endif @@ -302,7 +309,7 @@ extern void vesa_HideCursor(void); #endif extern void vesa_Init(void); extern void vesa_tty_end_screen(void); -extern void vesa_tty_startup(int *, int *); +extern void vesa_term_startup(int *, int *); extern void vesa_xputs(const char *, int, int); extern void vesa_xputc(char, int); extern void vesa_xputg(const glyph_info *, const glyph_info *); diff --git a/sys/msdos/video.c b/sys/msdos/video.c index a849027eb..a6b5bfe59 100644 --- a/sys/msdos/video.c +++ b/sys/msdos/video.c @@ -146,6 +146,61 @@ boolean traditional = FALSE; /* traditional TTY character mode */ boolean inmap = FALSE; /* in the map window */ char ttycolors[CLR_MAX]; /* also used/set in options.c */ +/* for linkage from wintty.c */ + +void +term_shutdown(void) +{ +} + +#ifdef ASCIIGRAPH +void +graph_on(void) +{ +} + +void +graph_off(void) +{ +} +#endif + +void +term_curs_set(int visibility) +{ + static int vis = -1; + + if (vis == visibility) + return; + + if (!visibility) { + if (!iflags.grmode) { + txt_hide_cursor(); +#ifdef SCREEN_VGA + } else if (iflags.usevga) { + vga_hide_cursor(); +#endif +#ifdef SCREEN_VESA + } else if (iflags.usevesa) { + vesa_hide_cursor(); + } +#endif + } else if (visibility) { + if (!iflags.grmode) { + txt_show_cursor(); +#ifdef SCREEN_VGA + } else if (iflags.usevga) { + vga_show_cursor(); +#endif +#ifdef SCREEN_VESA + } else if (iflags.usevesa) { + vesa_show_cursor(); + } +#endif + } + vis = visibility; +} + void backsp(void) { @@ -447,7 +502,7 @@ tty_number_pad(int state) } void -tty_startup(int *wid, int *hgt) +term_startup(int *wid, int *hgt) { /* code to sense display adapter is required here - MJA */ @@ -461,12 +516,12 @@ tty_startup(int *wid, int *hgt) #ifdef SCREEN_VGA if (iflags.usevga) { - vga_tty_startup(wid, hgt); + vga_term_startup(wid, hgt); } else #endif #ifdef SCREEN_VESA if (iflags.usevesa) { - vesa_tty_startup(wid, hgt); + vesa_term_startup(wid, hgt); } else #endif txt_startup(wid, hgt); diff --git a/sys/msdos/vidtxt.c b/sys/msdos/vidtxt.c index 35b314b26..680f23e3c 100644 --- a/sys/msdos/vidtxt.c +++ b/sys/msdos/vidtxt.c @@ -38,6 +38,14 @@ extern int attrib_gr_normal; /* graphics mode normal attribute */ extern int attrib_text_intense; /* text mode intense attribute */ extern int attrib_gr_intense; /* graphics mode intense attribute */ +#if defined(SCREEN_BIOS) && !defined(PC9800) +static unsigned char cursor_info = 0, + cursor_start_scanline = 6, cursor_end_scanline = 7; + +static void get_cursinfo(unsigned char *start, unsigned char *end, + unsigned char *flg); +#endif + void txt_get_scr_size(void) { @@ -80,6 +88,7 @@ txt_get_scr_size(void) LI = regs.h.dl + 1; CO = regs.h.ah; + #endif /* PC9800 */ } @@ -260,6 +269,9 @@ txt_startup(int *wid, int *hgt) attrib_gr_normal = attrib_text_normal; attrib_gr_intense = attrib_text_intense; g_attribute = attrib_text_normal; /* Give it a starting value */ + get_cursinfo(&cursor_start_scanline, + &cursor_end_scanline, + &cursor_info); } /* @@ -400,6 +412,61 @@ void txt_get_cursor(int *x, int *y) (void) int86(VIDEO_BIOS, ®s, ®s); /* Get Cursor Position */ *x = regs.h.dl; *y = regs.h.dh; + if (!cursor_info) { + cursor_start_scanline = regs.h.ch; + cursor_end_scanline = regs.h.cl; + cursor_info = 1; + } +} + +void txt_hide_cursor(void) +{ + union REGS regs; + + regs.x.dx = 0; + regs.h.ah = SETCURTYP; /* set cursor type */ + regs.h.ch = 0x3F; /* starting scanline */ + regs.h.cl = 0; /* ending scanline */ + regs.x.bx = 0; + (void) int86(VIDEO_BIOS, ®s, ®s); +} + +void txt_show_cursor(void) +{ + union REGS regs; + + regs.x.dx = 0; + regs.h.ah = SETCURTYP; /* set cursor type */ + if (cursor_info) { + regs.h.ch = cursor_start_scanline; /* starting scanline */ + regs.h.cl = cursor_end_scanline; /* ending scanline */ + } else { + regs.h.ch = 6; /* starting scanline */ + regs.h.cl = 7; /* ending scanline */ + } + regs.x.bx = 0; + (void) int86(VIDEO_BIOS, ®s, ®s); +} + +static void +get_cursinfo(uchar *start, uchar *end, uchar *flg) +{ + union REGS regs; + + regs.x.dx = 0; + regs.h.ah = GETCURPOS; /* get cursor position */ + regs.x.cx = 0; + regs.x.bx = 0; + (void) int86(VIDEO_BIOS, ®s, ®s); /* Get Cursor Position */ + + if (regs.h.ch != 0x3f) { + *start = regs.h.ch; + *end = regs.h.cl; + } else { + *start = 6; + *end = 7; + } + *flg = 1; } #endif /* SCREEN_BIOS && !PC9800 */ diff --git a/sys/msdos/vidvesa.c b/sys/msdos/vidvesa.c index 08d92b7a3..4cc594bcf 100644 --- a/sys/msdos/vidvesa.c +++ b/sys/msdos/vidvesa.c @@ -603,7 +603,7 @@ vesa_tty_end_screen(void) } void -vesa_tty_startup(int *wid, int *hgt) +vesa_term_startup(int *wid, int *hgt) { /* code to sense display adapter is required here - MJA */ @@ -2042,6 +2042,16 @@ vesa_SetSoftPalette(const struct Pixel *palette) return TRUE; } +void +vesa_hide_cursor(void) +{ +} + +void +vesa_show_cursor(void) +{ +} + #ifdef POSITIONBAR #define PBAR_ROW (LI - 4) diff --git a/sys/msdos/vidvga.c b/sys/msdos/vidvga.c index 506068ac9..02b9f444f 100644 --- a/sys/msdos/vidvga.c +++ b/sys/msdos/vidvga.c @@ -297,7 +297,7 @@ vga_tty_end_screen(void) } void -vga_tty_startup(int *wid, int *hgt) +vga_term_startup(int *wid, int *hgt) { /* code to sense display adapter is required here - MJA */ @@ -1159,6 +1159,16 @@ vga_SetPalette(const struct Pixel *p) } } +void +vga_hide_cursor(void) +{ +} + +void +vga_show_cursor(void) +{ +} + /*static unsigned char colorbits[]={0x01,0x02,0x04,0x08}; */ /* wrong */ static unsigned char colorbits[] = { 0x08, 0x04, 0x02, 0x01 }; diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 0bb30b488..5d60053cd 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -22,12 +22,6 @@ #include /* for getcwd() prototype */ #endif -#if defined(MICRO) || defined(OS2) -ATTRNORETURN void nethack_exit(int) NORETURN; -#else -#define nethack_exit exit -#endif - char *exepath(char *); char orgdir[PATHLEN]; /* also used in pcsys.c, amidos.c */ diff --git a/sys/share/pcsys.c b/sys/share/pcsys.c index ed779a284..07cab8e42 100644 --- a/sys/share/pcsys.c +++ b/sys/share/pcsys.c @@ -27,11 +27,6 @@ #define filesize filesize_nh #endif -#if defined(MICRO) || defined(OS2) -ATTRNORETURN void nethack_exit(int) NORETURN; -#else -#define nethack_exit exit -#endif static void msexit(void); #ifdef MOVERLAY @@ -276,6 +271,7 @@ msexit(void) restore_colors(); #endif wait_synch(); + term_curs_set(1); return; } #endif /* MICRO || OS2 */ diff --git a/sys/unix/hints/include/cross-pre2.370 b/sys/unix/hints/include/cross-pre2.370 index eda6829fd..b1018dc5a 100644 --- a/sys/unix/hints/include/cross-pre2.370 +++ b/sys/unix/hints/include/cross-pre2.370 @@ -235,8 +235,8 @@ ifeq "$(WANT_DEBUG)" "1" GDBEXE=$(dostargetexes)gdb.exe GDBBAT=NHGDB.BAT GDBCMDLINE=directory nhsrc/src nhsrc/include nhsrc/sys/msdos \ - nhsrc/sys/share nhsrc/win/share nhsrc/win/curses \ - nhsrc/win/tty nhsrc/util + nhsrc/sys/share nhsrc/win/curses \ + nhsrc/win/tty else GDBEXE= GDBBAT= diff --git a/sys/windows/consoletty.c b/sys/windows/consoletty.c index 0ffe4f8dc..c89e2c8ed 100644 --- a/sys/windows/consoletty.c +++ b/sys/windows/consoletty.c @@ -1079,7 +1079,7 @@ setftty(void) } void -tty_startup(int *wid, int *hgt) +term_startup(int *wid, int *hgt) { *wid = console.width; *hgt = console.height; @@ -1092,6 +1092,36 @@ tty_number_pad(int state UNUSED) // do nothing } +/* stub tcap replacements for linkage from wintty.c */ + +void +term_shutdown(void) +{ + consoletty_exit(); +} + +#ifdef ASCIIGRAPH +void +graph_on(void) +{ +} + +void +graph_off(void) +{ +} +#endif + +void +tty_end_screen(void) +{ + term_clear_screen(); + really_move_cursor(); + buffer_fill_to_end(console.back_buffer, &clear_cell, 0, 0); + back_buffer_flip(); + FlushConsoleInputBuffer(console.hConIn); +} + void tty_start_screen(void) { @@ -1107,16 +1137,6 @@ tty_start_screen(void) #endif /* VIRTUAL_TERMINAL_SEQUENCES */ } -void -tty_end_screen(void) -{ - term_clear_screen(); - really_move_cursor(); - buffer_fill_to_end(console.back_buffer, &clear_cell, 0, 0); - back_buffer_flip(); - FlushConsoleInputBuffer(console.hConIn); -} - static BOOL CtrlHandler(DWORD ctrltype) { @@ -1251,6 +1271,7 @@ console_poskey(coordxy *x, coordxy *y, int *mod) if (gc.Cmd.swap_yz) numberpad |= 0x10; #endif + term_curs_set(1); ch = (program_state.done_hup) ? '\033' : keyboard_handling.pCheckInput( @@ -1262,6 +1283,7 @@ console_poskey(coordxy *x, coordxy *y, int *mod) *x = cc.x; *y = cc.y; } + term_curs_set(0); return ch; } @@ -1462,7 +1484,7 @@ xputc_core(int ch) */ #endif void -g_putch(int in_ch) +console_g_putch(int in_ch) { unsigned char ch; cell_t cell; @@ -1644,6 +1666,25 @@ term_clear_screen(void) home(); } +void +term_curs_set(int visibility) +{ + static int vis = -1; + + if (vis == visibility) + return; + + static CONSOLE_CURSOR_INFO cursorinfo = { 0, 0 }; + + if (!cursorinfo.dwSize) { + GetConsoleCursorInfo(console.hConOut, &cursorinfo); + vis = cursorinfo.bVisible ? 1 : 0; + } + cursorinfo.bVisible = visibility ? (BOOL) TRUE : (BOOL) FALSE; + SetConsoleCursorInfo(console.hConOut, &cursorinfo); + vis = visibility; +} + void home(void) { diff --git a/sys/windows/windmain.c b/sys/windows/windmain.c index 15cb8442f..eaef359b9 100644 --- a/sys/windows/windmain.c +++ b/sys/windows/windmain.c @@ -25,7 +25,6 @@ char *translate_path_variables(const char *, char *); char *exename(void); boolean fakeconsole(void); void freefakeconsole(void); -ATTRNORETURN extern void nethack_exit(int) NORETURN; #if defined(MSWIN_GRAPHICS) extern void mswin_destroy_reg(void); #endif diff --git a/win/tty/termcap.c b/win/tty/termcap.c index 2c6a5bd88..66ed2b6a2 100644 --- a/win/tty/termcap.c +++ b/win/tty/termcap.c @@ -78,7 +78,7 @@ static char tgotobuf[20]; static char tty_standout_on[16], tty_standout_off[16]; void -tty_startup(int *wid, int *hgt) +term_startup(int *wid, int *hgt) { #ifdef TERMLIB const char *term; @@ -336,7 +336,7 @@ tty_startup(int *wid, int *hgt) */ /* deallocate resources prior to final termination */ void -tty_shutdown(void) +term_shutdown(void) { /* we only attempt to clean up a few individual termcap variables */ #if defined(TERMLIB) || defined(ANSI_DEFAULT) @@ -1494,10 +1494,16 @@ term_start_bgcolor(int color) void term_curs_set(int visibility) { + static int vis = -1; + + if (vis == visibility) + return; + if (!visibility && nh_VI) xputs(nh_VI); else if (visibility && nh_VE) xputs(nh_VE); + vis = visibility; } #ifdef CHANGE_COLOR diff --git a/win/tty/wintty.c b/win/tty/wintty.c index 81fc0630a..7703b9648 100644 --- a/win/tty/wintty.c +++ b/win/tty/wintty.c @@ -197,7 +197,7 @@ static int clipy = 0, clipymax = 0; extern void adjust_cursor_flags(struct WinDesc *); #endif -#if defined(ASCIIGRAPH) && !defined(NO_TERMS) +#if defined(ASCIIGRAPH) boolean GFlag = FALSE; boolean HE_resets_AS; /* see termcap.c */ #endif @@ -518,9 +518,9 @@ tty_init_nhwindows(int *argcp UNUSED, char **argv UNUSED) /* * Remember tty modes, to be restored on exit. * - * gettty() must be called before tty_startup() + * gettty() must be called before term_startup() * due to ordering of LI/CO settings - * tty_startup() must be called before initoptions() + * term_startup() must be called before initoptions() * due to ordering of graphics settings */ #if defined(UNIX) || defined(VMS) @@ -529,7 +529,7 @@ tty_init_nhwindows(int *argcp UNUSED, char **argv UNUSED) gettty(); /* to port dependant tty setup */ - tty_startup(&wid, &hgt); + term_startup(&wid, &hgt); setftty(); /* calls start_screen */ term_curs_set(0); @@ -840,12 +840,7 @@ tty_exit_nhwindows(const char *str) ttyDisplay = (struct DisplayDesc *) 0; #endif -#ifndef NO_TERMS /*(until this gets added to the window interface)*/ - tty_shutdown(); /* cleanup termcap/terminfo/whatever */ -#endif -#ifdef WIN32CON - consoletty_exit(); -#endif + term_shutdown(); /* cleanup termcap/terminfo/whatever */ iflags.window_inited = 0; } @@ -3720,15 +3715,15 @@ end_glyphout(void) } } -#ifndef WIN32CON void g_putch(int in_ch) { char ch = (char) in_ch; +#ifndef WIN32CON HUPSKIP(); -#if defined(ASCIIGRAPH) && !defined(NO_TERMS) +#if defined(ASCIIGRAPH) if (SYMHANDLING(H_UTF8)) { (void) putchar(ch); } else if (SYMHANDLING(H_IBM) @@ -3762,14 +3757,16 @@ g_putch(int in_ch) (void) putchar(ch); } -#else +#else /* ?ASCIIGRAPH */ (void) putchar(ch); -#endif /* ASCIIGRAPH && !NO_TERMS */ - +#endif /* ASCIIGRAPH */ +#else /* WIN32CON */ + console_g_putch(in_ch); + nhUse(ch); +#endif /* WIN32CON */ return; } -#endif /* !WIN32CON */ #if defined(UNIX) || defined(VMS) #if defined(ENHANCED_SYMBOLS) @@ -3867,9 +3864,9 @@ tty_print_glyph( #ifndef NO_TERMS if (ul_hack && ch == '_') { /* non-destructive underscore */ - (void) putchar((char) ' '); - backsp(); - } + (void) putchar((char) ' '); + backsp(); + } #endif if (iflags.use_color) { ttyDisplay->colorflags = NH_BASIC_COLOR; @@ -3965,13 +3962,12 @@ term_start_bgcolor(int color) { /* placeholder for now */ } -#endif /* !MSDOS && !WIN32 */ - void term_curs_set(int visibility UNUSED) { /* nothing */ } +#endif #ifdef CHANGE_COLOR void diff --git a/win/win32/NetHackW.c b/win/win32/NetHackW.c index 02b537cbd..45f8bf709 100644 --- a/win/win32/NetHackW.c +++ b/win/win32/NetHackW.c @@ -53,7 +53,6 @@ Version _WIN_32IE Platform/IE /*#define COMCTL_URL * "http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp"*/ -ATTRNORETURN extern void nethack_exit(int) NORETURN; static TCHAR *_get_cmd_arg(TCHAR *pCmdLine); static HRESULT GetComCtlVersion(LPDWORD pdwMajor, LPDWORD pdwMinor); BOOL WINAPI