From owner-freebsd-current@FreeBSD.ORG Tue Sep 29 08:16:31 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DCA5106566B for ; Tue, 29 Sep 2009 08:16:31 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from kabab.cs.huji.ac.il (kabab.cs.huji.ac.il [132.65.16.84]) by mx1.freebsd.org (Postfix) with ESMTP id CA8868FC12 for ; Tue, 29 Sep 2009 08:16:30 +0000 (UTC) Received: from pampa.cs.huji.ac.il ([132.65.80.32]) by kabab.cs.huji.ac.il with esmtp id 1MsXso-0005Eg-CY; Tue, 29 Sep 2009 10:16:26 +0200 X-Mailer: exmh version 2.7.2 01/07/2005 with nmh-1.2 To: d@delphij.net In-reply-to: <4AC141B0.4090705@delphij.net> References: <4AC141B0.4090705@delphij.net> Comments: In-reply-to Xin LI message dated "Mon, 28 Sep 2009 16:07:28 -0700." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 29 Sep 2009 10:16:26 +0200 From: Daniel Braniss Message-ID: Cc: FreeBSD Current Subject: Re: [PATCH] Shutdown cooloff feature X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Sep 2009 08:16:31 -0000 > Hi, > > I'm not sure if anyone would find this useful: > > - If a shutdown is initiated from a tty -and- > - It's not a restart -and- > - The time parameter is set to "now" > > Then, the shutdown(8) program would give something like this: > > Shutting down NOW, press ^C within 5 seconds to cancel... > > So the user would get a chance to terminate it before it's too late. > I know we are living in a virtual world, where even shutting down a computer is just a 'wish', but lets keep some sanity, now means now. On the other hand, you could make it conditional, say an environment variable 'GREENOPERATOR', in which case now would mean soon ... :-) danny > Cheers, > - -- > Xin LI http://www.delphij.net/ > FreeBSD - The Power to Serve! > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.12 (FreeBSD) > > iEYEARECAAYFAkrBQa8ACgkQi+vbBBjt66D5iQCgmISna2P4CbX9qob5SuetGuoy > nUUAn0BtA/67Lyy8+91JppokUE57c/Ew > =Aytq > -----END PGP SIGNATURE----- > > --------------090504090807040407080107 > Content-Type: text/plain; > name="shutdown-cooloff.diff" > Content-Transfer-Encoding: 7bit > Content-Disposition: inline; > filename="shutdown-cooloff.diff" > > Index: shutdown.c > =================================================================== > --- shutdown.c (revision 197578) > +++ shutdown.c (working copy) > @@ -103,6 +103,7 @@ static void timewarn(int); > static void usage(const char *); > > extern const char **environ; > +static char hostname[MAXHOSTNAMELEN]; > > int > main(int argc, char **argv) > @@ -159,6 +160,7 @@ main(int argc, char **argv) > if (nosync != NULL && !oflag) > usage("-n requires -o"); > > + gethostname(hostname, sizeof(hostname)); > getoffset(*argv++); > > if (*argv) { > @@ -193,8 +195,22 @@ main(int argc, char **argv) > > if (offset) > (void)printf("Shutdown at %.24s.\n", ctime(&shuttime)); > - else > + else { > + /* > + * Safe belt when the operation is going to happen > + * immediately from a tty. > + */ > + if (doreboot != 1) { > + if (isatty(STDIN_FILENO)) { > + printf("Shutting down %s NOW, press ^C within " > + "5 seconds to cancel...", hostname); > + fflush(stdout); > + sleep(5); > + printf(" going ahead!\n"); > + } > + } > (void)printf("Shutdown NOW!\n"); > + } > > if (!(whom = getlogin())) > whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???"; > @@ -271,14 +287,9 @@ static const char *restricted_environ[] = { > static void > timewarn(int timeleft) > { > - static int first; > - static char hostname[MAXHOSTNAMELEN + 1]; > FILE *pf; > char wcmd[MAXPATHLEN + 4]; > > - if (!first++) > - (void)gethostname(hostname, sizeof(hostname)); > - > /* undoc -n option to wall suppresses normal wall banner */ > (void)snprintf(wcmd, sizeof(wcmd), "%s -n", _PATH_WALL); > environ = restricted_environ; > > --------------090504090807040407080107 > Content-Type: text/plain; charset="us-ascii" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Content-Disposition: inline > > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" > --------------090504090807040407080107-- >