#ifdef WINDOWSNT
#define read sys_read
#define write sys_write
+#ifndef STDERR_FILENO
+#define STDERR_FILENO fileno(GetStdHandle(STD_ERROR_HANDLE))
+#endif
#include <windows.h>
#endif /* not WINDOWSNT */
#if defined (SIGTSTP) && !defined (MSDOS)
{
- int pgrp = EMACS_GETPGRP (0);
+ pid_t pgrp = EMACS_GETPGRP (0);
EMACS_KILLPG (pgrp, SIGTSTP);
}
#ifdef SIGDANGER
sigaddset (&action->sa_mask, SIGDANGER);
#endif
+#ifdef PROFILER_CPU_SUPPORT
+ sigaddset (&action->sa_mask, SIGPROF);
+#endif
#ifdef SIGWINCH
sigaddset (&action->sa_mask, SIGWINCH);
#endif
errno = old_errno;
}
\f
-#if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
-static char *my_sys_siglist[NSIG];
-# ifdef sys_siglist
-# undef sys_siglist
+#if !HAVE_DECL_SYS_SIGLIST
+# undef sys_siglist
+# ifdef _sys_siglist
+# define sys_siglist _sys_siglist
+# else
+# define sys_siglist my_sys_siglist
+static char const *sys_siglist[NSIG];
# endif
-# define sys_siglist my_sys_siglist
+#endif
+
+#ifdef _sys_nsig
+# define sys_siglist_entries _sys_nsig
+#else
+# define sys_siglist_entries NSIG
#endif
/* Handle bus errors, invalid instruction, etc. */
static void
handle_fatal_signal (int sig)
{
- terminate_due_to_signal (sig, 10);
+ terminate_due_to_signal (sig, 40);
}
static void
main_thread = pthread_self ();
#endif
-#if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
+#if !HAVE_DECL_SYS_SIGLIST && !defined _sys_siglist
if (! initialized)
{
sys_siglist[SIGABRT] = "Aborted";
sys_siglist[SIGXFSZ] = "File size limit exceeded";
# endif
}
-#endif /* !defined HAVE_STRSIGNAL && !defined HAVE_DECL_SYS_SIGLIST */
+#endif /* !HAVE_DECL_SYS_SIGLIST && !_sys_siglist */
/* Don't alter signal handlers if dumping. On some machines,
changing signal handlers sets static data that would make signals
#endif
sigaction (SIGTERM, &process_fatal_action, 0);
#ifdef SIGPROF
- sigaction (SIGPROF, &process_fatal_action, 0);
+ signal (SIGPROF, SIG_IGN);
#endif
#ifdef SIGVTALRM
sigaction (SIGVTALRM, &process_fatal_action, 0);
return fdutimens (fd, filename, timespec);
}
\f
-#ifndef HAVE_STRSIGNAL
-char *
-strsignal (int code)
+/* Like strsignal, except async-signal-safe, and this function typically
+ returns a string in the C locale rather than the current locale. */
+char const *
+safe_strsignal (int code)
{
- char *signame = 0;
+ char const *signame = 0;
- if (0 <= code && code < NSIG)
- {
- /* Cast to suppress warning if the table has const char *. */
- signame = (char *) sys_siglist[code];
- }
+ if (0 <= code && code < sys_siglist_entries)
+ signame = sys_siglist[code];
+ if (! signame)
+ signame = "Unknown signal";
return signame;
}
-#endif /* HAVE_STRSIGNAL */
\f
#ifndef DOS_NT
/* For make-serial-process */