python: Raise exceptions on write errors.
authorJustus Winter <justus@gnupg.org>
Thu, 12 May 2016 16:00:16 +0000 (18:00 +0200)
committerJustus Winter <justus@gnupg.org>
Thu, 12 May 2016 16:01:24 +0000 (18:01 +0200)
* lang/python/pyme/core.py (Data.write): Handle errors.
* lang/python/pyme/errors.py (GPGMEError.fromSyserror): New function.

Signed-off-by: Justus Winter <justus@gnupg.org>
lang/python/pyme/core.py
lang/python/pyme/errors.py

index dafbd9b..1d6e384 100644 (file)
@@ -394,7 +394,10 @@ class Data(GpgmeWrapper):
         """Write buffer given as string or bytes.
 
         If a string is given, it is implicitly encoded using UTF-8."""
-        return pygpgme.gpgme_data_write(self.wrapped, buffer)
+        written = pygpgme.gpgme_data_write(self.wrapped, buffer)
+        if written < 0:
+            raise GPGMEError.fromSyserror()
+        return written
 
     def read(self, size = -1):
         """Read at most size bytes, returned as bytes.
index 37d0fe6..5c8f922 100644 (file)
@@ -23,6 +23,10 @@ class GPGMEError(Exception):
         self.error = error
         self.message = message
 
+    @classmethod
+    def fromSyserror(cls):
+        return cls(pygpgme.gpgme_err_code_from_syserror())
+
     def getstring(self):
         message = "%s: %s" % (pygpgme.gpgme_strsource(self.error),
                               pygpgme.gpgme_strerror(self.error))