Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Aug 2004 23:22:52 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        freebsd-arch@freebsd.org
Subject:   Re: Introducing a poweroff(8) command
Message-ID:  <20040821202252.GB94336@gothmog.gr>
In-Reply-To: <20040821191659.GA94336@gothmog.gr>
References:  <20040821191659.GA94336@gothmog.gr>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2004-08-21 22:16, Giorgos Keramidas <keramida@freebsd.org> wrote:
> Hi guys,
> 
> In response to PR misc/70476 about `halt -p' I wrote a simple patch to
> introduce a "poweroff" command that will default to "halt -p" behavior
> and inhibit the need for changing the default behavior of halt(8).
> 
> o	Does this look ok to you all?
> 
> o	Should I suggest using it as a workaround of the behavior
> 	described in the PR?

It would be nice if I also included the patch :-?

%%%
Add a hard link to reboot(8) called "poweroff" which defaults to the
same behavior as "halt -p".  Also fix a related bug while here.  When
called as "halt -p" the previous reboot program would not disallow the
use of -d for saving kernel dumps (it would inhibit dumps without the
-p option though).

Index: Makefile
===================================================================
RCS file: /home/ncvs/src/sbin/reboot/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- Makefile	22 Mar 2004 00:52:27 -0000	1.13
+++ Makefile	21 Aug 2004 18:45:36 -0000
@@ -14,8 +14,8 @@
 MLINKS+= boot_i386.8 boot.8
 .endif
 
-LINKS=	${BINDIR}/reboot ${BINDIR}/halt ${BINDIR}/reboot ${BINDIR}/fastboot \
-	${BINDIR}/reboot ${BINDIR}/fasthalt
+LINKS=	${BINDIR}/reboot ${BINDIR}/halt ${BINDIR}/reboot ${BINDIR}/poweroff \
+	${BINDIR}/reboot ${BINDIR}/fastboot ${BINDIR}/reboot ${BINDIR}/fasthalt
 
 SCRIPTS=	nextboot.sh
 
Index: reboot.8
===================================================================
RCS file: /home/ncvs/src/sbin/reboot/reboot.8,v
retrieving revision 1.22
diff -u -r1.22 reboot.8
--- reboot.8	9 Apr 2004 19:58:35 -0000	1.22
+++ reboot.8	17 Aug 2004 22:04:34 -0000
@@ -34,6 +34,7 @@
 .Sh NAME
 .Nm reboot ,
 .Nm halt ,
+.Nm poweroff ,
 .Nm fastboot ,
 .Nm fasthalt
 .Nd stopping and restarting the system
@@ -41,6 +42,9 @@
 .Nm halt
 .Op Fl lnqp
 .Op Fl k Ar kernel
+.Nm poweroff
+.Op Fl lnqp
+.Op Fl k Ar kernel
 .Nm
 .Op Fl dlnqp
 .Op Fl k Ar kernel
@@ -52,7 +56,8 @@
 .Op Fl k Ar kernel
 .Sh DESCRIPTION
 The
-.Nm halt
+.Nm halt ,
+.Nm poweroff
 and
 .Nm
 utilities flush the file system cache to disk, send all running processes
@@ -91,9 +96,10 @@
 This option is intended for applications such as
 .Xr shutdown 8 ,
 that call
-.Nm
-or
+.Nm ,
 .Nm halt
+or
+.Nm poweroff
 and log this themselves.
 .It Fl n
 The file system cache is not flushed.
@@ -106,6 +112,9 @@
 This option should probably not be used.
 .It Fl p
 The system will turn off the power if it can.
+This is the default action if
+.Nm poweroff
+is called.
 If the power down action fails, the system
 will halt or reboot normally, depending on whether
 .Nm halt
Index: reboot.c
===================================================================
RCS file: /home/ncvs/src/sbin/reboot/reboot.c,v
retrieving revision 1.20
diff -u -r1.20 reboot.c
--- reboot.c	9 Apr 2004 19:58:35 -0000	1.20
+++ reboot.c	17 Aug 2004 21:55:57 -0000
@@ -70,9 +70,13 @@
 	char *kernel, *p;
 	const char *user;
 
-	if (strstr((p = rindex(*argv, '/')) ? p + 1 : *argv, "halt")) {
+	p = rindex(*argv, '/') ? p + 1 : *argv;
+	if (strcmp(p, "halt") == 0) {
 		dohalt = 1;
 		howto = RB_HALT;
+	} else if (strcmp(p, "poweroff") == 0) {
+		dohalt = 1;
+		howto = RB_POWEROFF;
 	} else
 		howto = 0;
 	kflag = lflag = nflag = qflag = 0;
@@ -108,6 +112,8 @@
 
 	if ((howto & (RB_DUMP | RB_HALT)) == (RB_DUMP | RB_HALT))
 		errx(1, "cannot dump (-d) when halting; must reboot instead");
+	if ((howto & (RB_DUMP | RB_POWEROFF)) == (RB_DUMP | RB_POWEROFF))
+		errx(1, "cannot dump (-d) when powering off; must reboot instead");
 	if (geteuid()) {
 		errno = EPERM;
 		err(1, NULL);
%%%



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040821202252.GB94336>