]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/gpg.py
And also catch double-sign-edit-failure-sign-whatever files
[dak.git] / daklib / gpg.py
index 90103afa0ddc20ae98457e34314d0407714f2f8b..62bfe096510453c180acb4fda1f5b80af6581ffa 100644 (file)
@@ -23,7 +23,6 @@ import errno
 import fcntl
 import os
 import select
-import sys
 
 try:
     _MAXFD = os.sysconf("SC_OPEN_MAX")
@@ -115,6 +114,10 @@ class SignedFile(object):
                     raise GpgException("No valid signature found. (GPG exited with status code %s)\n%s" % (exit_code, self.stderr))
 
     def _do_io(self, read, write):
+        for fd in write.keys():
+            old = fcntl.fcntl(fd, fcntl.F_GETFL)
+            fcntl.fcntl(fd, fcntl.F_SETFL, old | os.O_NONBLOCK)
+
         read_lines = dict( (fd, []) for fd in read )
         write_pos = dict( (fd, 0) for fd in write )
 
@@ -185,6 +188,6 @@ class SignedFile(object):
 
             os.execvp(self.gpg, args)
         finally:
-            sys.exit(1)
+            os._exit(1)
 
 # vim: set sw=4 et: