diff options
author | Justus Winter <[email protected]> | 2016-06-08 15:54:45 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2016-06-08 15:54:45 +0000 |
commit | 5ebc205439cac266685d2532466df8b3457dea23 (patch) | |
tree | e88cfb550a76046cc4d3cc4745106718889b3b9a /lang/python/helpers.c | |
parent | python: Fix stripping deprecated functionality. (diff) | |
download | gpgme-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.c | 20 |
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)) { |