summaryrefslogtreecommitdiff
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-10-25 09:51:50 +0000
committerRichard M. Stallman <rms@gnu.org>1994-10-25 09:51:50 +0000
commitd4a099ec38fb995d09e84712b24665385b4e417a (patch)
tree1f092123fd747b45e0bc0f5578dfce1ed1a68f53 /src/sysdep.c
parent43dd55b181df6ceeefff407a52091cbf1ddd7845 (diff)
downloademacs-d4a099ec38fb995d09e84712b24665385b4e417a.tar.gz
Never use input_fd if using X.
(stuff_char): Do nothing if read_socket_hook. (setpgrp_of_tty): Function deleted. (init_sigio): Take fd as argument. Callers changed. Don't call request_sigio; do the work here. (request_sigio, unrequest_sigio): Do nothing if read_socket_hook. (init_sys_modes): Don't call EMACS_GET_TTY unless we are going to change the settings.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r--src/sysdep.c59
1 files changed, 42 insertions, 17 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 7e1be187254..3067fe2ccbe 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -251,6 +251,9 @@ discard_tty_input ()
stuff_char (c)
char c;
{
+ if (read_socket_hook)
+ return;
+
/* Should perhaps error if in batch mode */
#ifdef TIOCSTI
ioctl (input_fd, TIOCSTI, &c);
@@ -563,13 +566,6 @@ child_setup_tty (out)
#endif /* not VMS */
#endif /* subprocesses */
-
-/*ARGSUSED*/
-setpgrp_of_tty (pid)
- int pid;
-{
- EMACS_SET_TTY_PGRP (input_fd, &pid);
-}
/* Record a signal code and the handler for it. */
struct save_signal
@@ -766,12 +762,14 @@ restore_signal_handlers (saved_handlers)
int old_fcntl_flags;
-init_sigio ()
+init_sigio (fd)
+ int fd;
{
#ifdef FASYNC
- old_fcntl_flags = fcntl (input_fd, F_GETFL, 0) & ~FASYNC;
+ old_fcntl_flags = fcntl (fd, F_GETFL, 0) & ~FASYNC;
+ fcntl (fd, F_SETFL, old_fcntl_flags | FASYNC);
#endif
- request_sigio ();
+ interrupts_deferred = 0;
}
reset_sigio ()
@@ -783,6 +781,9 @@ reset_sigio ()
request_sigio ()
{
+ if (read_socket_hook)
+ return;
+
#ifdef SIGWINCH
sigunblock (sigmask (SIGWINCH));
#endif
@@ -793,6 +794,9 @@ request_sigio ()
unrequest_sigio ()
{
+ if (read_socket_hook)
+ return;
+
#ifdef SIGWINCH
sigblock (sigmask (SIGWINCH));
#endif
@@ -806,6 +810,10 @@ unrequest_sigio ()
request_sigio ()
{
int on = 1;
+
+ if (read_socket_hook)
+ return;
+
ioctl (input_fd, FIOASYNC, &on);
interrupts_deferred = 0;
}
@@ -814,6 +822,9 @@ unrequest_sigio ()
{
int off = 0;
+ if (read_socket_hook)
+ return;
+
ioctl (input_fd, FIOASYNC, &off);
interrupts_deferred = 1;
}
@@ -829,6 +840,9 @@ request_sigio ()
int on = 1;
sigset_t st;
+ if (read_socket_hook)
+ return;
+
sigemptyset(&st);
sigaddset(&st, SIGIO);
ioctl (input_fd, FIOASYNC, &on);
@@ -840,6 +854,9 @@ unrequest_sigio ()
{
int off = 0;
+ if (read_socket_hook)
+ return;
+
ioctl (input_fd, FIOASYNC, &off);
interrupts_deferred = 1;
}
@@ -848,11 +865,17 @@ unrequest_sigio ()
request_sigio ()
{
+ if (read_socket_hook)
+ return;
+
croak ("request_sigio");
}
unrequest_sigio ()
{
+ if (read_socket_hook)
+ return;
+
croak ("unrequest_sigio");
}
@@ -1145,14 +1168,14 @@ init_sys_modes ()
narrow_foreground_group ();
#endif
- EMACS_GET_TTY (input_fd, &old_tty);
-
#ifdef HAVE_X_WINDOWS
/* Emacs' window system on MSDOG uses the `internal terminal' and therefore
needs the initialization code below. */
if (!read_socket_hook && EQ (Vwindow_system, Qnil))
#endif
{
+ EMACS_GET_TTY (input_fd, &old_tty);
+
tty = old_tty;
#if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
@@ -1353,7 +1376,7 @@ init_sys_modes ()
{
old_fcntl_owner = fcntl (input_fd, F_GETOWN, 0);
fcntl (input_fd, F_SETOWN, getpid ());
- init_sigio ();
+ init_sigio (input_fd);
}
#endif /* F_GETOWN */
#endif /* F_SETOWN_BUG */
@@ -1361,7 +1384,7 @@ init_sys_modes ()
#ifdef BSD4_1
if (interrupt_input)
- init_sigio ();
+ init_sigio (input_fd);
#endif
#ifdef VMS /* VMS sometimes has this symbol but lacks setvbuf. */
@@ -1849,7 +1872,8 @@ sys_sleep (timeval)
SYS$WAITFR (timer_ef); /* Wait for timer expiry only */
}
-init_sigio ()
+init_sigio (fd)
+ int fd;
{
request_sigio ();
}
@@ -2380,12 +2404,13 @@ sys_open (path, oflag, mode)
return open (path, oflag);
}
-init_sigio ()
+init_sigio (fd)
+ int fd;
{
if (noninteractive)
return;
lmode = LINTRUP | lmode;
- ioctl (0, TIOCLSET, &lmode);
+ ioctl (fd, TIOCLSET, &lmode);
}
reset_sigio ()