Various fixes.
[misc] / splitconf
index 0b2f672..12e63d2 100755 (executable)
--- a/splitconf
+++ b/splitconf
@@ -18,9 +18,7 @@ proc die {msg} {
 
 proc usage {file} {
   global argv0
-  puts $file "Usage: \n\
-       $argv0 \[-s\] FILE\n
-       $argv0 -u OUTPUT FILE FILE ..."
+  puts $file "Usage: \n\t$argv0 \[-s\] FILE\n\t$argv0 -u OUTPUT FILE FILE ..."
 }
 
 # clear-arrays ARRAY ...
@@ -229,15 +227,14 @@ switch $job {
     write-safe {
       while {[gets $c line] >= 0} {
        if {[regexp -- {^\[(.*)\]\s*$} $line . name]} {
-         if {[info exists o]} {
-           close $o
-         } elseif {!$donebefore} {
-           exec "sh" "-c" $opt(before) <@ stdin >@ stdout 2>@ stderr
-           set donebefore 1
-         }
+         if {[info exists o]} { close $o }
          if {[string equal $name ""]} {
            catch { unset o }
          } else {
+           if {!$donebefore} {
+             exec "sh" "-c" $opt(before) <@ stdin >@ stdout 2>@ stderr
+             set donebefore 1
+           }
            set name "$opt(prefix)$name"
            set o [write-safe-open $name]
            set new($name) 1
@@ -284,7 +281,9 @@ switch $job {
       }
       write-safe-manifest $conf [array names new]
     } {
-      exec "sh" "-c" $opt(after) <@ stdin >@ stdout 2>@ stderr
+      if {$donebefore} {
+       exec "sh" "-c" $opt(after) <@ stdin >@ stdout 2>@ stderr
+      }
     }
   }
 }