]> granicus.if.org Git - nethack/commitdiff
some early startup adjustments
authornhmall <nhmall@nethack.org>
Sun, 9 Dec 2018 18:09:30 +0000 (13:09 -0500)
committernhmall <nhmall@nethack.org>
Sun, 9 Dec 2018 18:09:30 +0000 (13:09 -0500)
sys/winnt/windmain.c
sys/winnt/winnt.c
win/share/safeproc.c

index 21a2fa1e2d477237021866733567201e3a63abf7..6b4b0491c35b2097885c6f6d9d1f7f5fc5e70a72 100644 (file)
@@ -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.
index 75dda292d49c7e22b85a59640541794b715576f7..c75e53c47cd638a7c21dde74ab0ec7751ee092fe 100644 (file)
@@ -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 <conio.h>
+
+int
+windows_console_custom_nhgetch(VOID_ARGS)
+{
+    return _getch();
+}
+
+
 void
 getreturn(str)
 const char *str;
index 1f268ee1673407856401ace745ac75cf9888f09f..671ee182255600d3bacfe284913a4c80cdd739df 100644 (file)
@@ -527,7 +527,7 @@ stdio_wait_synch()
 
     fprintf(stdout, "--More--");
     (void) fflush(stdout);
-    while (!index(valid, stdio_nhgetch()))
+    while (!index(valid, nhgetch()))
         ;
 }