mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-08 12:40:49 -08:00
Remove BSD_PGRPS.
* s/bsd-common.h (BSD_PGRPS): Remove undef. * s/gnu-linux.h (BSD_PGRPS): Remove. * term.c (dissociate_if_controlling_tty): * sysdep.c (narrow_foreground_group, widen_foreground_group) (init_sys_modes, reset_sys_modes): * emacs.c (main): * callproc.c (Fcall_process, child_setup): Remove code depending on BSD_PGRPS.
This commit is contained in:
parent
ef03a4e61e
commit
58eb6cf0f7
7 changed files with 16 additions and 97 deletions
|
|
@ -1,5 +1,15 @@
|
|||
2010-05-04 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
Remove BSD_PGRPS.
|
||||
* s/bsd-common.h (BSD_PGRPS): Remove undef.
|
||||
* s/gnu-linux.h (BSD_PGRPS): Remove.
|
||||
* term.c (dissociate_if_controlling_tty):
|
||||
* sysdep.c (narrow_foreground_group, widen_foreground_group)
|
||||
(init_sys_modes, reset_sys_modes):
|
||||
* emacs.c (main):
|
||||
* callproc.c (Fcall_process, child_setup): Remove code depending
|
||||
on BSD_PGRPS.
|
||||
|
||||
Remove POSIX_SIGNALS.
|
||||
* s/usg5-4.h (POSIX_SIGNALS):
|
||||
* s/netbsd.h (POSIX_SIGNALS):
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ extern char **environ;
|
|||
#endif
|
||||
|
||||
#ifdef HAVE_SETPGID
|
||||
#if !defined (USG) || defined (BSD_PGRPS)
|
||||
#if !defined (USG)
|
||||
#undef setpgrp
|
||||
#define setpgrp setpgid
|
||||
#endif
|
||||
|
|
@ -581,7 +581,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
|
|||
#ifdef HAVE_SETSID
|
||||
setsid ();
|
||||
#endif
|
||||
#if defined (USG) && !defined (BSD_PGRPS)
|
||||
#if defined (USG)
|
||||
setpgrp ();
|
||||
#else
|
||||
setpgrp (pid, pid);
|
||||
|
|
@ -1251,7 +1251,7 @@ child_setup (in, out, err, new_argv, set_pgrp, current_dir)
|
|||
#endif /* not MSDOS */
|
||||
#endif /* not WINDOWSNT */
|
||||
|
||||
#if defined(USG) && !defined(BSD_PGRPS)
|
||||
#if defined(USG)
|
||||
#ifndef SETPGRP_RELEASES_CTTY
|
||||
setpgrp (); /* No arguments but equivalent in this case */
|
||||
#endif
|
||||
|
|
|
|||
15
src/emacs.c
15
src/emacs.c
|
|
@ -81,7 +81,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#endif
|
||||
|
||||
#ifdef HAVE_SETPGID
|
||||
#if !defined (USG) || defined (BSD_PGRPS)
|
||||
#if !defined (USG)
|
||||
#undef setpgrp
|
||||
#define setpgrp setpgid
|
||||
#endif
|
||||
|
|
@ -193,11 +193,6 @@ EMACS_INT emacs_priority;
|
|||
data on the first attempt to change it inside asynchronous code. */
|
||||
int running_asynch_code;
|
||||
|
||||
#ifdef BSD_PGRPS
|
||||
/* See sysdep.c. */
|
||||
extern int inherited_pgroup;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
|
||||
/* If non-zero, -d was specified, meaning we're using some window system. */
|
||||
int display_arg;
|
||||
|
|
@ -1187,17 +1182,9 @@ main (int argc, char **argv)
|
|||
|
||||
if (! noninteractive)
|
||||
{
|
||||
#ifdef BSD_PGRPS
|
||||
if (initialized)
|
||||
{
|
||||
inherited_pgroup = EMACS_GETPGRP (0);
|
||||
setpgrp (0, getpid ());
|
||||
}
|
||||
#else
|
||||
#if defined (USG5) && defined (INTERRUPT_INPUT)
|
||||
setpgrp ();
|
||||
#endif
|
||||
#endif
|
||||
#if defined (HAVE_GTK_AND_PTHREAD) && !defined (SYSTEM_MALLOC) && !defined (DOUG_LEA_MALLOC)
|
||||
{
|
||||
extern void malloc_enable_thread P_ ((void));
|
||||
|
|
|
|||
|
|
@ -48,9 +48,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
#define SYSV_SYSTEM_DIR
|
||||
|
||||
/* POSIX-style pgrp behavior. */
|
||||
#undef BSD_PGRPS
|
||||
|
||||
#define UNEXEC unexelf.o
|
||||
|
||||
/* If the system's imake configuration file defines `NeedWidePrototypes'
|
||||
|
|
|
|||
|
|
@ -206,11 +206,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define HAVE_XRMSETDATABASE
|
||||
#endif
|
||||
|
||||
/* Use BSD process groups, but use setpgid() instead of setpgrp() to
|
||||
actually set a process group. */
|
||||
/* Interesting: only GNU/Linux defines this, but the BSDs do not... */
|
||||
/* #define BSD_PGRPS */
|
||||
|
||||
#define NARROWPROTO 1
|
||||
|
||||
/* Use mmap directly for allocating larger buffers. */
|
||||
|
|
|
|||
72
src/sysdep.c
72
src/sysdep.c
|
|
@ -73,7 +73,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <errno.h>
|
||||
|
||||
#ifdef HAVE_SETPGID
|
||||
#if !defined (USG) || defined (BSD_PGRPS)
|
||||
#if !defined (USG)
|
||||
#undef setpgrp
|
||||
#define setpgrp setpgid
|
||||
#endif
|
||||
|
|
@ -859,65 +859,7 @@ unrequest_sigio ()
|
|||
#endif /* FASYNC */
|
||||
#endif /* F_SETFL */
|
||||
#endif /* SIGIO */
|
||||
|
||||
/* Saving and restoring the process group of Emacs's terminal. */
|
||||
|
||||
#ifdef BSD_PGRPS
|
||||
|
||||
/* The process group of which Emacs was a member when it initially
|
||||
started.
|
||||
|
||||
If Emacs was in its own process group (i.e. inherited_pgroup ==
|
||||
getpid ()), then we know we're running under a shell with job
|
||||
control (Emacs would never be run as part of a pipeline).
|
||||
Everything is fine.
|
||||
|
||||
If Emacs was not in its own process group, then we know we're
|
||||
running under a shell (or a caller) that doesn't know how to
|
||||
separate itself from Emacs (like sh). Emacs must be in its own
|
||||
process group in order to receive SIGIO correctly. In this
|
||||
situation, we put ourselves in our own pgroup, forcibly set the
|
||||
tty's pgroup to our pgroup, and make sure to restore and reinstate
|
||||
the tty's pgroup just like any other terminal setting. If
|
||||
inherited_group was not the tty's pgroup, then we'll get a
|
||||
SIGTTmumble when we try to change the tty's pgroup, and a CONT if
|
||||
it goes foreground in the future, which is what should happen.
|
||||
|
||||
This variable is initialized in emacs.c. */
|
||||
int inherited_pgroup;
|
||||
|
||||
/* Split off the foreground process group to Emacs alone. When we are
|
||||
in the foreground, but not started in our own process group,
|
||||
redirect the tty device handle FD to point to our own process
|
||||
group. We need to be in our own process group to receive SIGIO
|
||||
properly. */
|
||||
static void
|
||||
narrow_foreground_group (int fd)
|
||||
{
|
||||
int me = getpid ();
|
||||
|
||||
setpgrp (0, inherited_pgroup);
|
||||
#if 0
|
||||
/* XXX inherited_pgroup should not be zero here, but GTK seems to
|
||||
mess this up. */
|
||||
if (! inherited_pgroup)
|
||||
abort (); /* Should not happen. */
|
||||
#endif
|
||||
if (inherited_pgroup != me)
|
||||
EMACS_SET_TTY_PGRP (fd, &me); /* XXX This only works on the controlling tty. */
|
||||
setpgrp (0, me);
|
||||
}
|
||||
|
||||
/* Set the tty to our original foreground group. */
|
||||
static void
|
||||
widen_foreground_group (int fd)
|
||||
{
|
||||
if (inherited_pgroup != getpid ())
|
||||
EMACS_SET_TTY_PGRP (fd, &inherited_pgroup);
|
||||
setpgrp (0, inherited_pgroup);
|
||||
}
|
||||
|
||||
#endif /* BSD_PGRPS */
|
||||
|
||||
/* Getting and setting emacs_tty structures. */
|
||||
|
||||
|
|
@ -1102,15 +1044,6 @@ init_sys_modes (tty_out)
|
|||
if (!tty_out->output)
|
||||
return; /* The tty is suspended. */
|
||||
|
||||
#ifdef BSD_PGRPS
|
||||
#if 0
|
||||
/* read_socket_hook is not global anymore. I think doing this
|
||||
unconditionally will not cause any problems. */
|
||||
if (! read_socket_hook && EQ (Vinitial_window_system, Qnil))
|
||||
#endif
|
||||
narrow_foreground_group (fileno (tty_out->input));
|
||||
#endif
|
||||
|
||||
if (! tty_out->old_tty)
|
||||
tty_out->old_tty = (struct emacs_tty *) xmalloc (sizeof (struct emacs_tty));
|
||||
|
||||
|
|
@ -1560,9 +1493,6 @@ reset_sys_modes (tty_out)
|
|||
dos_ttcooked ();
|
||||
#endif
|
||||
|
||||
#ifdef BSD_PGRPS
|
||||
widen_foreground_group (fileno (tty_out->input));
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef HAVE_PTYS
|
||||
|
|
|
|||
|
|
@ -3379,7 +3379,7 @@ dissociate_if_controlling_tty (int fd)
|
|||
EMACS_GET_TTY_PGRP (fd, &pgid); /* If tcgetpgrp succeeds, fd is the ctty. */
|
||||
if (pgid != -1)
|
||||
{
|
||||
#if defined (USG) && !defined (BSD_PGRPS)
|
||||
#if defined (USG)
|
||||
setpgrp ();
|
||||
no_controlling_tty = 1;
|
||||
#elif defined (CYGWIN)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue