aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-07-28 08:20:20 +0000
committerJustus Winter <[email protected]>2016-07-28 08:23:32 +0000
commit3d4dc3f0218234a27103bdb6f93b17c0703b71a2 (patch)
tree78fe738389557a8e388cc660c6373877662f08f0
parentFix including nil bytes in keylist output. (diff)
downloadgpgme-3d4dc3f0218234a27103bdb6f93b17c0703b71a2.tar.gz
gpgme-3d4dc3f0218234a27103bdb6f93b17c0703b71a2.zip
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 <[email protected]>
-rw-r--r--lang/python/Makefile.am4
-rw-r--r--lang/python/gpgme.i4
-rw-r--r--lang/python/helpers.c2
-rw-r--r--lang/python/helpers.h13
-rw-r--r--lang/python/private.h38
5 files changed, 46 insertions, 15 deletions
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 <stdlib.h>
#include <string.h>
#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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <gpgme.h>
+
+#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_ */