svn commit: r216823 - head/sbin/shutdown

Alexander Best arundel at freebsd.org
Fri Dec 31 01:27:04 UTC 2010


On Thu Dec 30 10, Pawel Jakub Dawidek wrote:
> 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).

any thoughts on adding a 'shutdown -c' switch for compatibility reasons?
right now the only way to revert a scheduled shutdown is to send a sigterm.
'shutdown -c' would provide an easier way and in addition to that using
'shutdown -c reason', admins could issue a notice to users why a scheduled
shutdown was aborted.

this is the explanation for the -c option from the linux shutdown(8) manual:

"-c
    Cancel an already running shutdown. With this option it is of course not
    possible to give the time argument, but you can enter a explanatory message
    on the command line that will be sent to all users."

cheers.
alex

>   
>   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);
>  }

-- 
a13x


More information about the svn-src-head mailing list