summaryrefslogtreecommitdiff
path: root/src/lib9/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/main.c')
-rw-r--r--src/lib9/main.c20
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;