Fix signal handler setup error reporting

This commit is contained in:
James R 2019-12-12 21:57:54 -08:00
parent b83f41e089
commit a0d6dc30cb

View file

@ -3050,6 +3050,26 @@ void I_Sleep(void)
} }
#ifdef NEWSIGNALHANDLER #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) static void I_Fork(void)
{ {
int child; int child;
@ -3061,10 +3081,7 @@ static void I_Fork(void)
switch (child) switch (child)
{ {
case -1: case -1:
I_Error( newsignalhandler_Warn("fork()");
"Error setting up signal reporting: fork(): %s\n",
strerror(errno)
);
break; break;
case 0: case 0:
break; break;
@ -3072,10 +3089,7 @@ static void I_Fork(void)
if (wait(&status) == -1) if (wait(&status) == -1)
{ {
kill(child, SIGKILL); kill(child, SIGKILL);
I_Error( newsignalhandler_Warn("wait()");
"Error setting up signal reporting: fork(): %s\n",
strerror(errno)
);
} }
else else
{ {
@ -3094,7 +3108,7 @@ static void I_Fork(void)
status = WEXITSTATUS (status); status = WEXITSTATUS (status);
} }
I_ShutdownSystem(); I_ShutdownConsole();
exit(status); exit(status);
} }
} }