hush.in: Close extraneous file descriptors when running the command. 1.2.8.2
authorMark Wooding <mdw@distorted.org.uk>
Sat, 1 Dec 2012 23:24:09 +0000 (23:24 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 1 Dec 2012 23:25:48 +0000 (23:25 +0000)
Otherwise, if it forks a daemon or something then we end up hanging
until the daemon stops.

debian/changelog
hush.in

index 106b4ab..ca7d1a7 100644 (file)
@@ -1,3 +1,10 @@
+nsict-utils (1.2.8.2) experimental; urgency=low
+
+  * hush: Close file descriptors around the command, so that we don't wait
+    for daemons to exit.
+
+ -- Mark Wooding <mdw@distorted.org.uk>  Sat, 01 Dec 2012 23:25:41 +0000
+
 nsict-utils (1.2.8.1) experimental; urgency=low
 
   * hush.8: Fix some misformatting.
diff --git a/hush.in b/hush.in
index 4b3b751..4359527 100755 (executable)
--- a/hush.in
+++ b/hush.in
@@ -146,7 +146,7 @@ EOF
 ## we write that to another pipe (fd 5) and pick it out using command
 ## substitution.
 rc=$(
-  { { { { set +e; $lbuf "$cmd" "$@"; echo $? >&5; } |
+  { { { { set +e; $lbuf "$cmd" "$@" 3>&- 4>&- 5>&-; echo $? >&5; } |
        while IFS= read line; do echo "| $line"; done >&4; } 2>&1 |
       while IFS= read line; do echo "* $line"; done >&4; } 4>&1 |
     cat -u >&3; } 5>&1 </dev/null