From 58eb6cf0f77547d29f4fddca922eb6f98c0ffb28 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Tue, 4 May 2010 00:40:53 -0700 Subject: [PATCH] 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. --- src/ChangeLog | 10 +++++++ src/callproc.c | 6 ++-- src/emacs.c | 15 +--------- src/s/bsd-common.h | 3 -- src/s/gnu-linux.h | 5 ---- src/sysdep.c | 72 +--------------------------------------------- src/term.c | 2 +- 7 files changed, 16 insertions(+), 97 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 797ab693639..91da5440dd4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,15 @@ 2010-05-04 Dan Nicolaescu + 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): diff --git a/src/callproc.c b/src/callproc.c index 317636d9cc8..44dd6ed7764 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -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 diff --git a/src/emacs.c b/src/emacs.c index d40ff3662f0..06c686d9950 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -81,7 +81,7 @@ along with GNU Emacs. If not, see . */ #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)); diff --git a/src/s/bsd-common.h b/src/s/bsd-common.h index 9dad7a9b1d9..e44757f19a4 100644 --- a/src/s/bsd-common.h +++ b/src/s/bsd-common.h @@ -48,9 +48,6 @@ along with GNU Emacs. If not, see . */ #define SYSV_SYSTEM_DIR -/* POSIX-style pgrp behavior. */ -#undef BSD_PGRPS - #define UNEXEC unexelf.o /* If the system's imake configuration file defines `NeedWidePrototypes' diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index 218af42bac4..b9cab20b273 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h @@ -206,11 +206,6 @@ along with GNU Emacs. If not, see . */ #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. */ diff --git a/src/sysdep.c b/src/sysdep.c index 38492c1bb00..1e114655b4e 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -73,7 +73,7 @@ along with GNU Emacs. If not, see . */ #include #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 diff --git a/src/term.c b/src/term.c index bb143207758..fad6e3c80d7 100644 --- a/src/term.c +++ b/src/term.c @@ -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) -- 2.39.2