svn commit: r216823 - head/sbin/shutdown

Pawel Jakub Dawidek pjd at FreeBSD.org
Thu Dec 30 18:06:32 UTC 2010


Author: pjd
Date: Thu Dec 30 18:06:31 2010
New Revision: 216823
URL: http://svn.freebsd.org/changeset/base/216823

Log:
  For compatibility with Linux and Solaris add poweroff(8).
  
  It is implemented as a hard link to shutdown(8) and it is equivalent of:
  
  	# shutdown -p now
  
  While I'm here put one line of usage into one line of C code so it is easier to
  grep(1) and separate unrelated code with empty line.
  
  MFC after:	2 weeks

Modified:
  head/sbin/shutdown/Makefile
  head/sbin/shutdown/shutdown.8
  head/sbin/shutdown/shutdown.c

Modified: head/sbin/shutdown/Makefile
==============================================================================
--- head/sbin/shutdown/Makefile	Thu Dec 30 16:56:20 2010	(r216822)
+++ head/sbin/shutdown/Makefile	Thu Dec 30 18:06:31 2010	(r216823)
@@ -3,6 +3,8 @@
 
 PROG=	shutdown
 MAN=	shutdown.8
+LINKS=	${BINDIR}/shutdown ${BINDIR}/poweroff
+MLINKS=	shutdown.8 poweroff.8
 
 BINOWN=	root
 BINGRP=	operator

Modified: head/sbin/shutdown/shutdown.8
==============================================================================
--- head/sbin/shutdown/shutdown.8	Thu Dec 30 16:56:20 2010	(r216822)
+++ head/sbin/shutdown/shutdown.8	Thu Dec 30 18:06:31 2010	(r216823)
@@ -28,11 +28,12 @@
 .\"     @(#)shutdown.8	8.2 (Berkeley) 4/27/95
 .\" $FreeBSD$
 .\"
-.Dd December 23, 2008
+.Dd December 30, 2010
 .Dt SHUTDOWN 8
 .Os
 .Sh NAME
-.Nm shutdown
+.Nm shutdown ,
+.Nm poweroff
 .Nd "close down the system at a given time"
 .Sh SYNOPSIS
 .Nm
@@ -47,6 +48,7 @@
 .Oc
 .Ar time
 .Op Ar warning-message ...
+.Nm poweroff
 .Sh DESCRIPTION
 The
 .Nm
@@ -173,6 +175,13 @@ When run without options, the  
 utility will place the system into single user mode at the 
 .Ar time
 specified.
+.Pp
+Calling utility as
+.Nm poweroff
+is equivalent of calling:
+.Bd -literal -offset indent
+shutdown -p now
+.Ed
 .Sh FILES
 .Bl -tag -width /var/run/nologin -compact
 .It Pa /var/run/nologin

Modified: head/sbin/shutdown/shutdown.c
==============================================================================
--- head/sbin/shutdown/shutdown.c	Thu Dec 30 16:56:20 2010	(r216822)
+++ head/sbin/shutdown/shutdown.c	Thu Dec 30 18:06:31 2010	(r216823)
@@ -115,8 +115,31 @@ main(int argc, char **argv)
 	if (geteuid())
 		errx(1, "NOT super-user");
 #endif
+
 	nosync = NULL;
 	readstdin = 0;
+
+	/*
+	 * Test for the special case where the utility is called as
+	 * "poweroff", for which it runs 'shutdown -p now'.
+	 */
+	if ((p = rindex(argv[0], '/')) == NULL)
+		p = argv[0];
+	else
+		++p;
+	if (strcmp(p, "poweroff") == 0) {
+		if (getopt(argc, argv, "") != -1)
+			usage((char *)NULL);
+		argc -= optind;
+		argv += optind;
+		if (argc != 0)
+			usage((char *)NULL);
+		dopower = 1;
+		offset = 0;
+		(void)time(&shuttime);
+		goto poweroff;
+	}
+
 	while ((ch = getopt(argc, argv, "-hknopr")) != -1)
 		switch (ch) {
 		case '-':
@@ -161,6 +184,7 @@ main(int argc, char **argv)
 
 	getoffset(*argv++);
 
+poweroff:
 	if (*argv) {
 		for (p = mbuf, len = sizeof(mbuf); *argv; ++argv) {
 			arglen = strlen(*argv);
@@ -510,7 +534,7 @@ usage(const char *cp)
 	if (cp != NULL)
 		warnx("%s", cp);
 	(void)fprintf(stderr,
-	    "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]]"
-	    " time [warning-message ...]\n");
+	    "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]] time [warning-message ...]\n"
+	    "       poweroff\n");
 	exit(1);
 }


More information about the svn-src-all mailing list