On Wed, Sep 01, 2010 at 12:41:04PM +0200, Kurt J. Bosch wrote: > 2010-08-31 13:16, Dave Reisner: > >On Tue, Aug 31, 2010 at 10:07:52AM +0200, Kurt J. Bosch wrote: > >>--snip-- > >> > >>I suggest: > >> > >> From b202be97f8dc1c0c68aaea792d4457c674c673f3 Mon Sep 17 00:00:00 2001 > >>From: Kurt J. Bosch<kjb-temp-2009@xxxxxxxxxxxxx> > >>Date: Tue, 31 Aug 2010 09:57:47 +0200 > >>Subject: [PATCH 17/17] Correct behaviour of kill_everything() > >> > >>--- > >> functions | 11 +++++------ > >> 1 files changed, 5 insertions(+), 6 deletions(-) > >> > >>diff --git a/functions b/functions > >>index b9ba718..3ca7324 100644 > >>--- a/functions > >>+++ b/functions > >>@@ -205,10 +205,9 @@ ck_status() { > >> kill_everything() { > >> # $1 = where we are being called from. > >> # This is used to determine which hooks to run. > >>- # Find daemons NOT in the DAEMONS array. Shut these down first > >>- for daemon in /var/run/daemons/*; do > >>- [[ -f $daemon ]] || continue > >>- daemon=${daemon##*/} > >>+ # Find daemons NOT in the DAEMONS array. > >>+ # Shut these down first in reverse order. > >>+ for daemon in $( /bin/ls -t /var/run/daemons ); do > >> in_array "$daemon" "${DAEMONS[@]}" || stop_daemon "$daemon" > >> done > >> > >>@@ -220,7 +219,7 @@ kill_everything() { > >> > >> # Terminate all processes > >> stat_busy "Sending SIGTERM To Processes" > >>- run_hook "$1_prekillall" > >>+ run_hook "${1}_prekillall" > >> /sbin/killall5 -15&> /dev/null > >> /bin/sleep 5 > >> stat_done > >>@@ -230,7 +229,7 @@ kill_everything() { > >> /bin/sleep 1 > >> stat_done > >> > >>- run_hook "$1_postkillall" > >>+ run_hook "${1}_postkillall" > >> } > >> > >> activate_vgs() { > >>-- > >>1.7.0.3 > >> > > > >Parsing the output of ls will never be better than using shell globbing > >no matter how much simpler it might make the code appear to be. Not only > >are you avoiding a fork, but the shell glob will properly handle any odd > >characters thrown into the mix. You'll see breakage on something as > >simple as a space in your suggestion. While I'm inclined to believe that > >there will never be a space in the name of a daemon in Arch, if we're > >going for pure Bash in this rewrite, let's use Bash instead of > >mindlessly forking. > > > NAK. The patch just reverts breaking of the current behaviour which > is shutdown daemons in reverse order of start. AFAIK bash globbing > is unable to sort on timestamps, right? p > The _current_ behavior doesn't define an order unless its in DAEMONS. I've reverted _your_ behavior, which I don't feel has proper justification. Suppose I start daemons foo, bar and baz (in that order) after Arch boots. Why then, should the shutdown order of these daemons change merely because I had to restart bar, which is independent of foo and baz? d