From: nhmall Date: Sun, 12 May 2019 01:55:27 +0000 (-0400) Subject: Report of no error msg deliverd by NetHackw.exe for some startup issues X-Git-Tag: NetHack-3.7.0_WIP~423^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=24fa83e5dc2fecb110b63ac5e73da25fd7be831d;p=nethack Report of no error msg deliverd by NetHackw.exe for some startup issues --- diff --git a/include/ntconf.h b/include/ntconf.h index bcfe2e9ee..234eefbcc 100644 --- a/include/ntconf.h +++ b/include/ntconf.h @@ -282,4 +282,5 @@ extern void FDECL(nhassert_failed, (const char * exp, const char * file, #define nethack_enter(argc, argv) nethack_enter_winnt() extern void FDECL(nethack_exit, (int)) NORETURN; +extern boolean FDECL(file_exists, (const char *)); #endif /* NTCONF_H */ diff --git a/sys/winnt/stubs.c b/sys/winnt/stubs.c index ab6b52271..ea38e3a57 100644 --- a/sys/winnt/stubs.c +++ b/sys/winnt/stubs.c @@ -22,6 +22,15 @@ mswin_destroy_reg() { return; } +void +mswin_raw_print_flush() +{ +} + +void +mswin_raw_print(const char *str) +{ +} /* MINGW32 has trouble with both a main() and WinMain() * so we move main for the MINGW tty version into this stub diff --git a/sys/winnt/windmain.c b/sys/winnt/windmain.c index 24fd33746..b2bb18e79 100644 --- a/sys/winnt/windmain.c +++ b/sys/winnt/windmain.c @@ -240,19 +240,28 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ /* * It seems you really want to play. */ - if (argc >= 1 && !strcmpi(default_window_sys, "mswin") && (strstri(argv[0], "nethackw.exe") || GUILaunched)) - iflags.windowtype_locked = TRUE; - + iflags.windowtype_locked = TRUE; windowtype = default_window_sys; + + if (!dlb_init()) { + pline("%s\n%s\n%s\n%s\n\n", + copyright_banner_line(1), copyright_banner_line(2), + copyright_banner_line(3), copyright_banner_line(4)); + pline("NetHack was unable to open the required file \"%s\"",DLBFILE); + if (file_exists(DLBFILE)) + pline("\nAre you perhaps trying to run NetHack within a zip utility?"); + error("dlb_init failure."); + } + if (!iflags.windowtype_locked) { #if defined(TTY_GRAPHICS) Strcpy(default_window_sys, "tty"); #else #if defined(CURSES_GRAPHICS) - Strcpy(default_window_sys, "curses"); + Strcpy(default_window_sys, "curses"); #endif /* CURSES */ #endif /* TTY */ if (iflags.windowtype_deferred && chosen_windowtype[0]) @@ -260,16 +269,6 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ } choose_windows(windowtype); - if (!dlb_init()) { - pline( - "%s\n%s\n%s\n%s\n\nNetHack was unable to open the required file " - "\"%s\".%s", - copyright_banner_line(1), copyright_banner_line(2), - copyright_banner_line(3), copyright_banner_line(4), DLBFILE, - "\nAre you perhaps trying to run NetHack within a zip utility?"); - error("dlb_init failure."); - } - u.uhp = 1; /* prevent RIP on early quits */ u.ux = 0; /* prevent flush_screen() */ @@ -931,4 +930,17 @@ gotlock: } #endif /* PC_LOCKING */ +boolean +file_exists(path) +const char *path; +{ + struct stat sb; + + /* Just see if it's there */ + if (stat(path, &sb)) { + return FALSE; + } + return TRUE; +} + /*windmain.c*/ diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index fc75071d8..d583253b5 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -212,6 +212,9 @@ return &szFullPath[0]; } #endif +extern void NDECL(mswin_raw_print_flush); +extern void FDECL(mswin_raw_print, (const char *)); + /* fatal error */ /*VARARGS1*/ void error @@ -233,6 +236,8 @@ VA_DECL(const char *, s) Strcat(buf, "\n"); raw_printf(buf); } + if (windowprocs.win_raw_print == mswin_raw_print) + mswin_raw_print_flush(); VA_END(); exit(EXIT_FAILURE); }