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_ */