svn commit: r194257 - head/sbin/init

Ed Schouten ed at FreeBSD.org
Mon Jun 15 19:24:48 UTC 2009


Author: ed
Date: Mon Jun 15 19:24:47 2009
New Revision: 194257
URL: http://svn.freebsd.org/changeset/base/194257

Log:
  Remove redundant code from runshutdown() now tcsetsid(3) works reliably.
  
  We can now just call setctty() without any problems. This means the
  shell running the shutdown script is now the session leader, just like
  on startup.

Modified:
  head/sbin/init/init.c

Modified: head/sbin/init/init.c
==============================================================================
--- head/sbin/init/init.c	Mon Jun 15 19:17:52 2009	(r194256)
+++ head/sbin/init/init.c	Mon Jun 15 19:24:47 2009	(r194257)
@@ -1563,30 +1563,13 @@ runshutdown(void)
 	shell = get_shell();
 
 	if ((pid = fork()) == 0) {
-		int	fd;
-
-		/* Assume that init already grab console as ctty before */
-
 		sigemptyset(&sa.sa_mask);
 		sa.sa_flags = 0;
 		sa.sa_handler = SIG_IGN;
 		sigaction(SIGTSTP, &sa, (struct sigaction *)0);
 		sigaction(SIGHUP, &sa, (struct sigaction *)0);
 
-		revoke(_PATH_CONSOLE);
-		if ((fd = open(_PATH_CONSOLE, O_RDWR)) == -1)
-			warning("can't open %s: %m", _PATH_CONSOLE);
-		else {
-			dup2(fd, 0);
-			dup2(fd, 1);
-			dup2(fd, 2);
-			if (fd > 2)
-				close(fd);
-		}
-
-		/*
-		 * Run the shutdown script.
-		 */
+		setctty(_PATH_CONSOLE);
 
 		char _sh[]	= "sh";
 		char _reboot[]	= "reboot";


More information about the svn-src-all mailing list