> 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 <hostname> 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 <delphij_at_delphij.net> 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) > _at__at_ -103,6 +103,7 _at__at_ static void timewarn(int); > static void usage(const char *); > > extern const char **environ; > +static char hostname[MAXHOSTNAMELEN]; > > int > main(int argc, char **argv) > _at__at_ -159,6 +160,7 _at__at_ main(int argc, char **argv) > if (nosync != NULL && !oflag) > usage("-n requires -o"); > > + gethostname(hostname, sizeof(hostname)); > getoffset(*argv++); > > if (*argv) { > _at__at_ -193,8 +195,22 _at__at_ 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 : "???"; > _at__at_ -271,14 +287,9 _at__at_ 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_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" > --------------090504090807040407080107-- >Received on Tue Sep 29 2009 - 06:16:31 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:56 UTC