Mercurial > emacs
changeset 4681:6945d02dd725
(stuff_char): Use input_fd.
(narrow_foreground_group, widen_foreground_group, init_sys_modes)
(init_baud_rate, init_sigio, request_sigio, unrequest_sigio): Likewise.
(change_input_fd): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 08 Sep 1993 16:55:53 +0000 |
parents | 9d56bce1534a |
children | c4d471244116 |
files | src/sysdep.c |
diffstat | 1 files changed, 36 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/src/sysdep.c Wed Sep 08 15:28:44 1993 +0000 +++ b/src/sysdep.c Wed Sep 08 16:55:53 1993 +0000 @@ -168,10 +168,21 @@ extern short ospeed; /* The file descriptor for Emacs's input terminal. - Under Unix, this is always left zero; + Under Unix, this is normaly zero except when using X; under VMS, we place the input channel number here. This allows us to write more code that works for both VMS and Unix. */ static int input_fd; + +/* Specify a different file descriptor for further input operations. */ + +void +change_input_fd (fd) + int fd; +{ + input_fd = fd; +} + +/* Discard pending input on descriptor input_fd. */ discard_tty_input () { @@ -194,7 +205,7 @@ #ifdef APOLLO { int zero = 0; - ioctl (0, TIOCFLUSH, &zero); + ioctl (input_fd, TIOCFLUSH, &zero); } #else /* not Apollo */ EMACS_GET_TTY (input_fd, &buf); @@ -205,19 +216,22 @@ #ifdef SIGTSTP +/* Arrange for character C to be read as the next input from + the terminal. */ + stuff_char (c) char c; { /* Should perhaps error if in batch mode */ #ifdef TIOCSTI - ioctl (0, TIOCSTI, &c); + ioctl (input_fd, TIOCSTI, &c); #else /* no TIOCSTI */ error ("Cannot stuff terminal input characters in this version of Unix."); #endif /* no TIOCSTI */ } #endif /* SIGTSTP */ - + init_baud_rate () { if (noninteractive) @@ -235,7 +249,7 @@ struct termios sg; sg.c_cflag = (sg.c_cflag & ~CBAUD) | B9600; - tcgetattr (0, &sg); + tcgetattr (input_fd, &sg); ospeed = cfgetospeed (&sg); #else /* neither VMS nor TERMIOS */ #ifdef HAVE_TERMIO @@ -243,7 +257,7 @@ sg.c_cflag = (sg.c_cflag & ~CBAUD) | B9600; #ifdef HAVE_TCATTR - tcgetattr (0, &sg); + tcgetattr (input_fd, &sg); #else ioctl (input_fd, TCGETA, &sg); #endif @@ -252,7 +266,7 @@ struct sgttyb sg; sg.sg_ospeed = B9600; - if (ioctl (0, TIOCGETP, &sg) < 0) + if (ioctl (input_fd, TIOCGETP, &sg) < 0) abort (); ospeed = sg.sg_ospeed; #endif /* not HAVE_TERMIO */ @@ -275,7 +289,7 @@ #endif /* Ok to do nothing if this feature does not exist */ } - + #ifndef subprocesses wait_without_blocking () @@ -408,7 +422,7 @@ #endif #endif } - + #ifndef VMS /* Set up the terminal at the other end of a pseudo-terminal that we will be controlling an inferior through. @@ -509,7 +523,7 @@ { EMACS_SET_TTY_PGRP (input_fd, &pid); } - + /* Record a signal code and the handler for it. */ struct save_signal { @@ -686,7 +700,7 @@ init_sigio () { #ifdef FASYNC - old_fcntl_flags = fcntl (0, F_GETFL, 0) & ~FASYNC; + old_fcntl_flags = fcntl (input_fd, F_GETFL, 0) & ~FASYNC; #endif request_sigio (); } @@ -703,7 +717,7 @@ #ifdef SIGWINCH sigunblock (sigmask (SIGWINCH)); #endif - fcntl (0, F_SETFL, old_fcntl_flags | FASYNC); + fcntl (input_fd, F_SETFL, old_fcntl_flags | FASYNC); interrupts_deferred = 0; } @@ -713,7 +727,7 @@ #ifdef SIGWINCH sigblock (sigmask (SIGWINCH)); #endif - fcntl (0, F_SETFL, old_fcntl_flags); + fcntl (input_fd, F_SETFL, old_fcntl_flags); interrupts_deferred = 1; } @@ -723,7 +737,7 @@ request_sigio () { int on = 1; - ioctl (0, FIOASYNC, &on); + ioctl (input_fd, FIOASYNC, &on); interrupts_deferred = 0; } @@ -731,7 +745,7 @@ { int off = 0; - ioctl (0, FIOASYNC, &off); + ioctl (input_fd, FIOASYNC, &off); interrupts_deferred = 1; } @@ -785,7 +799,7 @@ setpgrp (0, inherited_pgroup); if (inherited_pgroup != me) - EMACS_SET_TTY_PGRP (0, &me); + EMACS_SET_TTY_PGRP (input_fd, &me); setpgrp (0, me); } @@ -793,7 +807,7 @@ widen_foreground_group () { if (inherited_pgroup != getpid ()) - EMACS_SET_TTY_PGRP (0, &inherited_pgroup); + EMACS_SET_TTY_PGRP (input_fd, &inherited_pgroup); setpgrp (0, inherited_pgroup); } @@ -1189,11 +1203,11 @@ we have an unlocked terminal at the start. */ #ifdef TCXONC - if (!flow_control) ioctl (0, TCXONC, 1); + if (!flow_control) ioctl (input_fd, TCXONC, 1); #endif #ifndef APOLLO #ifdef TIOCSTART - if (!flow_control) ioctl (0, TIOCSTART, 0); + if (!flow_control) ioctl (input_fd, TIOCSTART, 0); #endif #endif @@ -1225,8 +1239,8 @@ #ifdef F_GETOWN /* F_SETFL does not imply existence of F_GETOWN */ if (interrupt_input) { - old_fcntl_owner = fcntl (0, F_GETOWN, 0); - fcntl (0, F_SETOWN, getpid ()); + old_fcntl_owner = fcntl (input_fd, F_GETOWN, 0); + fcntl (input_fd, F_SETOWN, getpid ()); init_sigio (); } #endif /* F_GETOWN */ @@ -1377,7 +1391,7 @@ if (interrupt_input) { reset_sigio (); - fcntl (0, F_SETOWN, old_fcntl_owner); + fcntl (input_fd, F_SETOWN, old_fcntl_owner); } #endif /* F_SETOWN */ #endif /* F_SETOWN_BUG */