]> arthur.barton.de Git - bup.git/commitdiff
mux: give stdin exclusively to subcommand
authorRob Browning <rlb@defaultvalue.org>
Tue, 11 Nov 2014 22:23:22 +0000 (16:23 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sun, 1 Feb 2015 18:27:46 +0000 (12:27 -0600)
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
cmd/mux-cmd.py

index 332d7bdce463a0330549b290bee5b901f3381cac..b70c0a8eeaa538c3ca1026afe1753e756d6257dd 100755 (executable)
@@ -3,6 +3,12 @@ import os, sys, subprocess, struct
 from bup import options
 from bup.helpers import *
 
+# Give the subcommand exclusive access to stdin.
+orig_stdin = os.dup(0)
+devnull = os.open('/dev/null', os.O_RDONLY)
+os.dup2(devnull, 0)
+os.close(devnull)
+
 optspec = """
 bup mux command [arguments...]
 --
@@ -21,7 +27,9 @@ errr, errw = os.pipe()
 def close_fds():
     os.close(outr)
     os.close(errr)
-p = subprocess.Popen(subcmd, stdout=outw, stderr=errw, preexec_fn=close_fds)
+
+p = subprocess.Popen(subcmd, stdin=orig_stdin, stdout=outw, stderr=errw,
+                     preexec_fn=close_fds)
 os.close(outw)
 os.close(errw)
 sys.stdout.write('BUPMUX')