aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/gpgme.i
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python/gpgme.i')
-rw-r--r--lang/python/gpgme.i17
1 files changed, 17 insertions, 0 deletions
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 7c11943c..c5b5bc97 100644
--- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i
@@ -173,6 +173,23 @@ PyObject* object_to_gpgme_t(PyObject* input, const char* objtype, int argnum) {
free($1);
}
+/* For gpgme_data_write, but should be universal. */
+%typemap(in) (const void *buffer, size_t size) {
+ if ($input == Py_None)
+ $1 = NULL, $2 = 0;
+ else if (PyUnicode_Check($input))
+ $1 = PyUnicode_AsUTF8AndSize($input, (size_t *) &$2);
+ else if (PyBytes_Check($input))
+ PyBytes_AsStringAndSize($input, (char **) &$1, (size_t *) &$2);
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "arg %d: expected str, bytes, or None, got %s",
+ $argnum, $input->ob_type->tp_name);
+ return NULL;
+ }
+}
+%typemap(freearg) (const void *buffer, size_t size) "";
+
// Make types containing 'next' field to be lists
%ignore next;
%typemap(out) gpgme_sig_notation_t, gpgme_engine_info_t, gpgme_subkey_t, gpgme_key_sig_t,