From: nhmall Date: Sun, 9 Dec 2018 18:09:30 +0000 (-0500) Subject: some early startup adjustments X-Git-Tag: nmake-explicit-path~55^2~3^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=46d2724f584a7422388c36bfcd4a378fc63a0705;p=nethack some early startup adjustments --- diff --git a/sys/winnt/windmain.c b/sys/winnt/windmain.c index 21a2fa1e2..6b4b0491c 100644 --- a/sys/winnt/windmain.c +++ b/sys/winnt/windmain.c @@ -33,6 +33,7 @@ int FDECL(windows_nh_poskey, (int *, int *, int *)); void FDECL(windows_raw_print, (const char *)); char FDECL(windows_yn_function, (const char *, const char *, CHAR_P)); void FDECL(windows_getlin, (const char *, char *)); +extern int NDECL(windows_console_custom_nhgetch); char orgdir[PATHLEN]; boolean getreturn_enabled; @@ -72,6 +73,9 @@ char *argv[]; */ if (!WINDOWPORT("safe-startup")) windowprocs = *get_safe_procs(1); + if (!GUILaunched) + windowprocs.win_nhgetch = windows_console_custom_nhgetch; + sys_early_init(); #ifdef _MSC_VER # ifdef DEBUG @@ -311,6 +315,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ /* * It seems you really want to play. */ + /* In 3.6.0, several ports process options before they init * the window port. This allows settings that impact window * ports to be specified or read from the sys or user config files. diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index 75dda292d..c75e53c47 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -53,6 +53,7 @@ static HWND GetConsoleHwnd(void); #if !defined(TTY_GRAPHICS) extern void NDECL(backsp); #endif +int NDECL(windows_console_custom_nhgetch); /* The function pointer nt_kbhit contains a kbhit() equivalent * which varies depending on which window port is active. @@ -508,15 +509,28 @@ int code; * GUILaunched is defined and set in nttty.c. */ - if (GUILaunched) - getreturn_enabled = TRUE; - else + + if (!GUILaunched) { windowprocs = *get_safe_procs(1); + /* use our custom version which works + a little cleaner than the stdio one */ + windowprocs.win_nhgetch = windows_console_custom_nhgetch; + } if (getreturn_enabled) wait_synch(); exit(code); } +#undef kbhit +#include + +int +windows_console_custom_nhgetch(VOID_ARGS) +{ + return _getch(); +} + + void getreturn(str) const char *str; diff --git a/win/share/safeproc.c b/win/share/safeproc.c index 1f268ee16..671ee1822 100644 --- a/win/share/safeproc.c +++ b/win/share/safeproc.c @@ -527,7 +527,7 @@ stdio_wait_synch() fprintf(stdout, "--More--"); (void) fflush(stdout); - while (!index(valid, stdio_nhgetch())) + while (!index(valid, nhgetch())) ; }