Re: DOS/Windows-specific code: maint.c

Kevin Buettner
2001-05-08T23:40:00Z

On May 8, 2:48pm, Eli Zaretskii wrote:

> * maint.c:
>
> #ifndef _WIN32
> /* ARGSUSED */
> static void
> maintenance_dump_me (char *args, int from_tty)
> {
> if (query ("Should GDB dump core? "))
> {
> #ifdef __DJGPP__
> /* SIGQUIT by default is ignored, so use SIGABRT instead. */
> signal (SIGABRT, SIG_DFL);
> kill (getpid (), SIGABRT);
> #else
> signal (SIGQUIT, SIG_DFL);
> kill (getpid (), SIGQUIT);
> #endif
> }
> }
> #endif
>
> Should we define SIGNAL_TO_DUMP_CORE (default to SIGQUIT)? It could
> then be set to 0 on Windows, and maintenance_dump_me could print a
> suitable message ("not supported on this platform" or some such) if
> its value is zero.
>
> Btw, why isn't SIGABRT used on Unix here?

I don't know. SIGABRT seems like a better (more portable) choice.

With that in mind, why not do the following:

/* ARGSUSED */
static void
maintenance_dump_me (char *args, int from_tty)
{
if (query ("Should GDB dump core? "))
{
#ifdef SIGABRT
signal (SIGABRT, SIG_DFL);
kill (getpid (), SIGABRT);
#else
error ("Not supported on this platform.");
#endif
}
}

Note that the _WIN32 ifdef has been removed so that
maintenance_dump_me() will always be defined.

If, for some reason, the above won't work, I think your
SIGNAL_TO_DUMP_CORE suggestion is okay too.

Kevin