Blob Blame History Raw
To: vim-dev@vim.org
Subject: Patch 7.2.097
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.097
Problem:    "!xterm&" doesn't work when 'shell' is "bash".
Solution:   Ignore SIGHUP after calling setsid(). (Simon Schubert) 
Files:	    src/os_unix.c


*** ../vim-7.2.096/src/os_unix.c	Fri Nov 28 21:26:50 2008
--- src/os_unix.c	Wed Feb  4 12:09:55 2009
***************
*** 3950,3956 ****
--- 3950,3966 ----
  		 * children can be kill()ed.  Don't do this when using pipes,
  		 * because stdin is not a tty, we would lose /dev/tty. */
  		if (p_stmp)
+ 		{
  		    (void)setsid();
+ #  if defined(SIGHUP)
+ 		    /* When doing "!xterm&" and 'shell' is bash: the shell
+ 		     * will exit and send SIGHUP to all processes in its
+ 		     * group, killing the just started process.  Ignore SIGHUP
+ 		     * to avoid that. (suggested by Simon Schubert)
+ 		     */
+ 		    signal(SIGHUP, SIG_IGN);
+ #  endif
+ 		}
  # endif
  # ifdef FEAT_GUI
  		if (pty_slave_fd >= 0)
*** ../vim-7.2.096/src/version.c	Wed Feb  4 13:13:42 2009
--- src/version.c	Wed Feb  4 14:16:37 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     97,
  /**/

-- 
It was recently discovered that research causes cancer in rats.

 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///