From 5ebc205439cac266685d2532466df8b3457dea23 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Wed, 8 Jun 2016 17:54:45 +0200 Subject: [PATCH] python: Add function to raise exceptions from c. * lang/python/helpers.c (pygpgme_raise_exception): New function. Signed-off-by: Justus Winter --- lang/python/helpers.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 # Copyright (C) 2002 John Goerzen # @@ -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)) {