From 3d4dc3f0218234a27103bdb6f93b17c0703b71a2 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 28 Jul 2016 10:20:20 +0200 Subject: [PATCH] python: Expose less functions to the Python world. * lang/python/Makefile.am (EXTRA_DIST, COPY_FILES): Add new file. * lang/python/gpgme.i: Include new file and add comments. * lang/python/helpers.c: Include new file. * lang/python/helpers.h: Move functions we do not need to expose... * lang/python/private.h: ... here. Signed-off-by: Justus Winter --- lang/python/Makefile.am | 4 ++-- lang/python/gpgme.i | 4 ++++ lang/python/helpers.c | 2 ++ lang/python/helpers.h | 13 ------------- lang/python/private.h | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 lang/python/private.h diff --git a/lang/python/Makefile.am b/lang/python/Makefile.am index 0ac1dd01..3651db98 100644 --- a/lang/python/Makefile.am +++ b/lang/python/Makefile.am @@ -20,7 +20,7 @@ EXTRA_DIST = \ README \ MANIFEST.in \ gpgme.i \ - helpers.c helpers.h \ + helpers.c helpers.h private.h \ gpgme-h-clean.py \ examples \ pyme @@ -34,7 +34,7 @@ COPY_FILES = \ $(srcdir)/gpgme-h-clean.py \ $(srcdir)/pyme \ $(srcdir)/examples \ - $(srcdir)/helpers.c $(srcdir)/helpers.h + $(srcdir)/helpers.c $(srcdir)/helpers.h $(srcdir)/private.h # For VPATH builds we need to copy some files because Python's # distutils are not VPATH-aware. diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index c1e00740..2b186c4f 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -476,8 +476,10 @@ struct _gpgme_sig_notation %} FILE *fdopen(int fildes, const char *mode); +/* We include both headers in the generated c code... */ %{ #include "helpers.h" +#include "private.h" /* SWIG support for helpers.c */ PyObject * @@ -499,4 +501,6 @@ pygpgme_unwrap_gpgme_ctx_t(PyObject *wrapped) } %} +/* ... but only the public definitions here. They will be exposed to + the Python world, so let's be careful. */ %include "helpers.h" diff --git a/lang/python/helpers.c b/lang/python/helpers.c index d6cbb883..2b381729 100644 --- a/lang/python/helpers.c +++ b/lang/python/helpers.c @@ -24,7 +24,9 @@ #include #include #include "Python.h" + #include "helpers.h" +#include "private.h" static PyObject *GPGMEError = NULL; diff --git a/lang/python/helpers.h b/lang/python/helpers.h index beb2682f..4bfb6646 100644 --- a/lang/python/helpers.h +++ b/lang/python/helpers.h @@ -26,25 +26,12 @@ #define write(fd, str, sz) {DWORD written; WriteFile((HANDLE) fd, str, sz, &written, 0);} #endif -void pygpgme_exception_init(void); -gpgme_error_t pygpgme_exception2code(void); - -PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum); -PyObject *object_to_gpgme_data_t(PyObject *input, int argnum, - gpgme_data_t *wrapper, - PyObject **bytesio, Py_buffer *view); - -PyObject *pygpgme_wrap_fragile_result(PyObject *fragile, const char *classname); - PyObject *pygpgme_raise_callback_exception(PyObject *self); PyObject *pygpgme_set_passphrase_cb(PyObject *self, PyObject *cb); PyObject *pygpgme_set_progress_cb(PyObject *self, PyObject *cb); PyObject *pygpgme_set_status_cb(PyObject *self, PyObject *cb); -gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status, - const char *args, int fd); - PyObject *pygpgme_data_new_from_cbs(PyObject *self, PyObject *pycbs, gpgme_data_t *r_data); diff --git a/lang/python/private.h b/lang/python/private.h new file mode 100644 index 00000000..cb21f060 --- /dev/null +++ b/lang/python/private.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2016 g10 Code GmbH + * + * This file is part of GPGME. + * + * GPGME is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * GPGME is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see . + */ + +#include + +#ifndef _PYME_PRIVATE_H_ +#define _PYME_PRIVATE_H_ + +void pygpgme_exception_init(void); +gpgme_error_t pygpgme_exception2code(void); + +PyObject *object_to_gpgme_t(PyObject *input, const char *objtype, int argnum); +PyObject *object_to_gpgme_data_t(PyObject *input, int argnum, + gpgme_data_t *wrapper, + PyObject **bytesio, Py_buffer *view); + +PyObject *pygpgme_wrap_fragile_result(PyObject *fragile, const char *classname); + +gpgme_error_t pyEditCb(void *opaque, gpgme_status_code_t status, + const char *args, int fd); + +#endif /* _PYME_PRIVATE_H_ */