summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2016-09-05 19:50:59 +0300
committerEli Zaretskii <eliz@gnu.org>2016-09-05 19:50:59 +0300
commitcfaf18a27c262694750400005e882f1cfc7ff2b0 (patch)
treecf5b3cb11a3dd8ba29f63d64163f5cdae7bd47b6 /src
parent62e4dc4660cb3b29cfffcad0639e51c7f382ced8 (diff)
Treat SIGINT correctly in GUI sessions on MS-Windows
* src/w32proc.c (sys_signal): Don't reject SIGINT, as it is supported by MS runtime. * src/term.c (DEV_TTY): Move from here ... * src/conf_post.h (DEV_TTY): ... to here. Separate definitions for WINDOWSNT and for the rest. * src/keyboard.c (handle_interrupt_signal): Use DEV_TTY instead of a literal "/dev/tty". * etc/NEWS: Mention the behavior change.
Diffstat (limited to 'src')
-rw-r--r--src/conf_post.h9
-rw-r--r--src/keyboard.c2
-rw-r--r--src/term.c3
-rw-r--r--src/w32proc.c4
4 files changed, 12 insertions, 6 deletions
diff --git a/src/conf_post.h b/src/conf_post.h
index 865d0183a5..bc8b096488 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -140,6 +140,10 @@ typedef bool bool_bf;
#undef HAVE_RINT
#endif /* HPUX */
+#ifdef WINDOWSNT
+# define DEV_TTY "CONOUT$"
+#endif
+
#ifdef MSDOS
#ifndef __DJGPP__
You lose; /* Emacs for DOS must be compiled with DJGPP */
@@ -242,6 +246,11 @@ extern int emacs_setenv_TZ (char const *);
#include <string.h>
#include <stdlib.h>
+#ifndef DEV_TTY
+# define DEV_TTY "/dev/tty"
+#endif
+
+
#if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
#define NO_INLINE __attribute__((noinline))
#else
diff --git a/src/keyboard.c b/src/keyboard.c
index e44155260f..3ef797c11c 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10241,7 +10241,7 @@ static void
handle_interrupt_signal (int sig)
{
/* See if we have an active terminal on our controlling tty. */
- struct terminal *terminal = get_named_terminal ("/dev/tty");
+ struct terminal *terminal = get_named_terminal (DEV_TTY);
if (!terminal)
{
/* If there are no frames there, let's pretend that we are a
diff --git a/src/term.c b/src/term.c
index d54ff115f9..cb684b3aaa 100644
--- a/src/term.c
+++ b/src/term.c
@@ -58,10 +58,7 @@ static int been_here = -1;
/* The name of the default console device. */
#ifdef WINDOWSNT
-#define DEV_TTY "CONOUT$"
#include "w32term.h"
-#else
-#define DEV_TTY "/dev/tty"
#endif
static void tty_set_scroll_region (struct frame *f, int start, int stop);
diff --git a/src/w32proc.c b/src/w32proc.c
index 11a121f7c0..217d005a36 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -86,9 +86,9 @@ sys_signal (int sig, signal_handler handler)
/* SIGCHLD is needed for supporting subprocesses, see sys_kill
below. SIGALRM and SIGPROF are used by setitimer. All the
others are the only ones supported by the MS runtime. */
- if (!(sig == SIGCHLD || sig == SIGSEGV || sig == SIGILL
+ if (!(sig == SIGINT || sig == SIGSEGV || sig == SIGILL
|| sig == SIGFPE || sig == SIGABRT || sig == SIGTERM
- || sig == SIGALRM || sig == SIGPROF))
+ || sig == SIGCHLD || sig == SIGALRM || sig == SIGPROF))
{
errno = EINVAL;
return SIG_ERR;