Fix signal handler setup error reporting

This commit is contained in:
James R 2019-12-12 21:57:54 -08:00
parent 35053adfb2
commit 838850ffc1
1 changed files with 23 additions and 11 deletions

View File

@ -2167,6 +2167,26 @@ void I_Sleep(void)
}
#ifdef NEWSIGNALHANDLER
static void newsignalhandler_Warn(const char *pr)
{
char text[128];
snprintf(text, sizeof text,
"Error while setting up signal reporting: %s: %s",
pr,
strerror(errno)
);
I_OutputMsg("%s\n", text);
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,
"Startup error",
text, NULL);
I_ShutdownConsole();
exit(-1);
}
static void I_Fork(void)
{
int child;
@ -2178,10 +2198,7 @@ static void I_Fork(void)
switch (child)
{
case -1:
I_Error(
"Error setting up signal reporting: fork(): %s\n",
strerror(errno)
);
newsignalhandler_Warn("fork()");
break;
case 0:
break;
@ -2189,10 +2206,7 @@ static void I_Fork(void)
if (wait(&status) == -1)
{
kill(child, SIGKILL);
I_Error(
"Error setting up signal reporting: fork(): %s\n",
strerror(errno)
);
newsignalhandler_Warn("wait()");
}
else
{
@ -2211,7 +2225,7 @@ static void I_Fork(void)
status = WEXITSTATUS (status);
}
I_ShutdownSystem();
I_ShutdownConsole();
exit(status);
}
}
@ -2468,8 +2482,6 @@ void I_ShutdownSystem(void)
{
INT32 c;
I_ShutdownConsole();
for (c = MAX_QUIT_FUNCS-1; c >= 0; c--)
if (quit_funcs[c])
(*quit_funcs[c])();