win32tty hangs if you ^C at "Who are you?"
From Newsgroups: rec.games.roguelike.nethack : > <email deleted> > 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 > <Enter> 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. > > -- <Someone>
This commit is contained in:
+7
-1
@@ -52,6 +52,10 @@ extern void FDECL(nethack_exit,(int));
|
|||||||
#define nethack_exit exit
|
#define nethack_exit exit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MSWIN_GRAPHICS)
|
#if defined(MSWIN_GRAPHICS)
|
||||||
extern void NDECL(mswin_destroy_reg);
|
extern void NDECL(mswin_destroy_reg);
|
||||||
#endif
|
#endif
|
||||||
@@ -433,7 +437,9 @@ not_recovered:
|
|||||||
#ifdef OS2
|
#ifdef OS2
|
||||||
gettty(); /* somehow ctrl-P gets turned back on during startup ... */
|
gettty(); /* somehow ctrl-P gets turned back on during startup ... */
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WIN32
|
||||||
|
getreturn_enabled = TRUE;
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -389,7 +389,7 @@ char *name;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
boolean getreturn_disable;
|
boolean getreturn_enabled;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -397,7 +397,7 @@ getreturn(str)
|
|||||||
const char *str;
|
const char *str;
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if (getreturn_disable) return;
|
if (!getreturn_enabled) return;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TOS
|
#ifdef TOS
|
||||||
msmsg("Hit <Return> %s.", str);
|
msmsg("Hit <Return> %s.", str);
|
||||||
|
|||||||
+3
-3
@@ -58,6 +58,8 @@ INPUT_RECORD ir;
|
|||||||
int GUILaunched;
|
int GUILaunched;
|
||||||
static BOOL FDECL(CtrlHandler, (DWORD));
|
static BOOL FDECL(CtrlHandler, (DWORD));
|
||||||
|
|
||||||
|
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
|
||||||
|
|
||||||
/* dynamic keystroke handling .DLL support */
|
/* dynamic keystroke handling .DLL support */
|
||||||
typedef int (__stdcall * PROCESS_KEYSTROKE)(
|
typedef int (__stdcall * PROCESS_KEYSTROKE)(
|
||||||
HANDLE,
|
HANDLE,
|
||||||
@@ -207,8 +209,6 @@ tty_end_screen()
|
|||||||
FlushConsoleInputBuffer(hConIn);
|
FlushConsoleInputBuffer(hConIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern boolean getreturn_disable; /* from sys/share/pcsys.c */
|
|
||||||
|
|
||||||
static BOOL CtrlHandler(ctrltype)
|
static BOOL CtrlHandler(ctrltype)
|
||||||
DWORD ctrltype;
|
DWORD ctrltype;
|
||||||
{
|
{
|
||||||
@@ -219,7 +219,7 @@ DWORD ctrltype;
|
|||||||
case CTRL_CLOSE_EVENT:
|
case CTRL_CLOSE_EVENT:
|
||||||
case CTRL_LOGOFF_EVENT:
|
case CTRL_LOGOFF_EVENT:
|
||||||
case CTRL_SHUTDOWN_EVENT:
|
case CTRL_SHUTDOWN_EVENT:
|
||||||
getreturn_disable = TRUE;
|
getreturn_enabled = FALSE;
|
||||||
#ifndef NOSAVEONHANGUP
|
#ifndef NOSAVEONHANGUP
|
||||||
hangup(0);
|
hangup(0);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user