summaryrefslogtreecommitdiffstats
path: root/sbin/shutdown
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2010-12-30 18:06:31 +0000
committerpjd <pjd@FreeBSD.org>2010-12-30 18:06:31 +0000
commit7a575413cdc4c11c26f5d9578b5458a6cbaecdbd (patch)
tree841e4912bb3223fec4f317ed614a2a385cbb5dec /sbin/shutdown
parent839236cbc1d5d457989fd137b9f17d9eaf1648dd (diff)
downloadFreeBSD-src-7a575413cdc4c11c26f5d9578b5458a6cbaecdbd.zip
FreeBSD-src-7a575413cdc4c11c26f5d9578b5458a6cbaecdbd.tar.gz
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
Diffstat (limited to 'sbin/shutdown')
-rw-r--r--sbin/shutdown/Makefile2
-rw-r--r--sbin/shutdown/shutdown.813
-rw-r--r--sbin/shutdown/shutdown.c28
3 files changed, 39 insertions, 4 deletions
diff --git a/sbin/shutdown/Makefile b/sbin/shutdown/Makefile
index 09b0b3e..a6ecb93 100644
--- a/sbin/shutdown/Makefile
+++ b/sbin/shutdown/Makefile
@@ -3,6 +3,8 @@
PROG= shutdown
MAN= shutdown.8
+LINKS= ${BINDIR}/shutdown ${BINDIR}/poweroff
+MLINKS= shutdown.8 poweroff.8
BINOWN= root
BINGRP= operator
diff --git a/sbin/shutdown/shutdown.8 b/sbin/shutdown/shutdown.8
index 1f7a1b0..032c4f3 100644
--- a/sbin/shutdown/shutdown.8
+++ b/sbin/shutdown/shutdown.8
@@ -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
diff --git a/sbin/shutdown/shutdown.c b/sbin/shutdown/shutdown.c
index 9032866..8e722ca 100644
--- a/sbin/shutdown/shutdown.c
+++ b/sbin/shutdown/shutdown.c
@@ -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);
}
OpenPOWER on IntegriCloud