From d07568164d3d4b2750e981a2629611b1359540d9 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Tue, 21 Oct 2003 14:17:04 +0000 Subject: [PATCH] win32tty hangs if you ^C at "Who are you?" From Newsgroups: rec.games.roguelike.nethack : > > Subject: question for windows tty users > > I am trying to hunt down a bug, and want to know if I have > encountered another one of those bizarre "features" that only > occur on my computer (I seem to get a lot of them). > > I can reproduce this bug, or whatever it is, in the official > Windows binary like this: Start the tty version of NetHack by > double clicking on the program. You won't see the bug if you > start it from the command line. When the game asks, "Who are > you?" press ^C. NetHack will respond with "^C abort. Hit > to end," and then it hangs. Pressing Enter does > nothing, and the program does not end. > > Can anybody else reproduce this behaviour? Thanks in advance. > > -- --- sys/share/pcmain.c | 8 +++++++- sys/share/pcsys.c | 4 ++-- sys/winnt/nttty.c | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 267cb0674..41a436d4a 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -52,6 +52,10 @@ extern void FDECL(nethack_exit,(int)); #define nethack_exit exit #endif +#ifdef WIN32 +extern boolean getreturn_enabled; /* from sys/share/pcsys.c */ +#endif + #if defined(MSWIN_GRAPHICS) extern void NDECL(mswin_destroy_reg); #endif @@ -433,7 +437,9 @@ not_recovered: #ifdef OS2 gettty(); /* somehow ctrl-P gets turned back on during startup ... */ #endif - +#ifdef WIN32 + getreturn_enabled = TRUE; +#endif return; } diff --git a/sys/share/pcsys.c b/sys/share/pcsys.c index 9c3f76284..9828508de 100644 --- a/sys/share/pcsys.c +++ b/sys/share/pcsys.c @@ -389,7 +389,7 @@ char *name; } #ifdef WIN32 -boolean getreturn_disable; +boolean getreturn_enabled; #endif void @@ -397,7 +397,7 @@ getreturn(str) const char *str; { #ifdef WIN32 - if (getreturn_disable) return; + if (!getreturn_enabled) return; #endif #ifdef TOS msmsg("Hit %s.", str); diff --git a/sys/winnt/nttty.c b/sys/winnt/nttty.c index 29ad6fd67..a1c2668ab 100644 --- a/sys/winnt/nttty.c +++ b/sys/winnt/nttty.c @@ -58,6 +58,8 @@ INPUT_RECORD ir; int GUILaunched; static BOOL FDECL(CtrlHandler, (DWORD)); +extern boolean getreturn_enabled; /* from sys/share/pcsys.c */ + /* dynamic keystroke handling .DLL support */ typedef int (__stdcall * PROCESS_KEYSTROKE)( HANDLE, @@ -207,8 +209,6 @@ tty_end_screen() FlushConsoleInputBuffer(hConIn); } -extern boolean getreturn_disable; /* from sys/share/pcsys.c */ - static BOOL CtrlHandler(ctrltype) DWORD ctrltype; { @@ -219,7 +219,7 @@ DWORD ctrltype; case CTRL_CLOSE_EVENT: case CTRL_LOGOFF_EVENT: case CTRL_SHUTDOWN_EVENT: - getreturn_disable = TRUE; + getreturn_enabled = FALSE; #ifndef NOSAVEONHANGUP hangup(0); #endif -- 2.40.0