diff options
author | Yann Leboulanger <asterix@lagaule.org> | 2007-11-14 01:42:53 +0300 |
---|---|---|
committer | Yann Leboulanger <asterix@lagaule.org> | 2007-11-14 01:42:53 +0300 |
commit | c89c92e2fd0cb93e576c45f0636f3888eb0cdbaf (patch) | |
tree | 0b9caafd092d5ee3f2e0c7c4b7831d4f0f6f2bbc | |
parent | fa5728ec3027adf2be156e4de4c20eb24b6d407e (diff) |
don't fail gpg encryption when verbose is on. check in status-fd if encryption succeeded. fixes #3542
-rw-r--r-- | src/common/GnuPG.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py index 7d1a88e56..5d865828f 100644 --- a/src/common/GnuPG.py +++ b/src/common/GnuPG.py @@ -87,19 +87,36 @@ else: return str, 'GnuPG not usable' self.options.recipients = recipients # a list! - proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', + proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', 'status', 'stderr']) proc.handles['stdin'].write(str) - proc.handles['stdin'].close() + try: + proc.handles['stdin'].close() + except IOError: + pass output = proc.handles['stdout'].read() - proc.handles['stdout'].close() + try: + proc.handles['stdout'].close() + except IOError: + pass + + stat = proc.handles['status'] + resp = self._read_response(stat) + try: + proc.handles['status'].close() + except IOError: + pass error = proc.handles['stderr'].read() proc.handles['stderr'].close() try: proc.wait() except IOError: pass + if 'BEGIN_ENCRYPTION' in resp and 'END_ENCRYPTION' in resp: + # Encryption succeeded, even if there is output on stderr. Maybe + # verbose is on + error = '' return self._stripHeaderFooter(output), error def decrypt(self, str, keyID): |