diff options
Diffstat (limited to 'src/lib9/main.c')
-rw-r--r-- | src/lib9/main.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib9/main.c b/src/lib9/main.c index 45f86c7ec..816494af0 100644 --- a/src/lib9/main.c +++ b/src/lib9/main.c @@ -27,11 +27,31 @@ THE SOFTWARE. #define NOPLAN9DEFINES #include <libc.h> +#ifdef WIN32 +#include <windows.h> + +static void +crashhandler(int sig) +{ + USED(sig); + fprint(2, "%s: internal fatal error.\n", argv0); + exit(1); +} +#endif + extern void p9main(int, char**); int main(int argc, char **argv) { +#ifdef WIN32 + signal(SIGSEGV, crashhandler); + signal(SIGBUS, crashhandler); + // don't display the crash dialog + DWORD mode = SetErrorMode(SEM_NOGPFAULTERRORBOX); + SetErrorMode(mode | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); + argv0 = argv[0]; +#endif p9main(argc, argv); exits("main"); return 99; |