aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/helpers.c
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-06-08 15:54:45 +0000
committerJustus Winter <[email protected]>2016-06-08 15:54:45 +0000
commit5ebc205439cac266685d2532466df8b3457dea23 (patch)
treee88cfb550a76046cc4d3cc4745106718889b3b9a /lang/python/helpers.c
parentpython: Fix stripping deprecated functionality. (diff)
downloadgpgme-5ebc205439cac266685d2532466df8b3457dea23.tar.gz
gpgme-5ebc205439cac266685d2532466df8b3457dea23.zip
python: Add function to raise exceptions from c.
* lang/python/helpers.c (pygpgme_raise_exception): New function. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
-rw-r--r--lang/python/helpers.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 7e1c1c34..5c620e6b 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -1,4 +1,5 @@
/*
+# Copyright (C) 2016 g10 Code GmbH
# Copyright (C) 2004 Igor Belyi <[email protected]>
# Copyright (C) 2002 John Goerzen <[email protected]>
#
@@ -41,6 +42,25 @@ void pygpgme_exception_init(void) {
}
}
+static PyObject *
+pygpgme_raise_exception(gpgme_error_t err)
+{
+ PyObject *e;
+
+ pygpgme_exception_init();
+ if (GPGMEError == NULL)
+ return PyErr_Format(PyExc_RuntimeError, "Got gpgme_error_t %d", err);
+
+ e = PyObject_CallFunction(GPGMEError, "l", (long) err);
+ if (e == NULL)
+ return NULL;
+
+ PyErr_SetObject(GPGMEError, e);
+ Py_DECREF(e);
+
+ return NULL; /* raise */
+}
+
gpgme_error_t pygpgme_exception2code(void) {
gpgme_error_t err_status = gpg_error(GPG_ERR_GENERAL);
if (GPGMEError && PyErr_ExceptionMatches(GPGMEError)) {