From 7d27867154ac722b183f18ad10b53dee3148594c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 29 Dec 2017 15:13:49 +0000 Subject: [PATCH] python: Add write method to Writer Signed-off-by: Michael Tremer --- src/python/writer.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/python/writer.c b/src/python/writer.c index 989ef99..03722d6 100644 --- a/src/python/writer.c +++ b/src/python/writer.c @@ -65,6 +65,40 @@ static int Writer_set_vendor(WriterObject* self, PyObject* args) { return 0; } +static PyObject* Writer_write(WriterObject* self, PyObject* args) { + const char* path = NULL; + + if (!PyArg_ParseTuple(args, "s", &path)) + return NULL; + + FILE* f = fopen(path, "w"); + if (!f) { + PyErr_Format(PyExc_IOError, strerror(errno)); + return NULL; + } + + int r = loc_writer_write(self->writer, f); + fclose(f); + + // Raise any errors + if (r) { + PyErr_Format(PyExc_IOError, strerror(errno)); + return NULL; + } + + Py_RETURN_NONE; +} + +static struct PyMethodDef Writer_methods[] = { + { + "write", + (PyCFunction)Writer_write, + METH_VARARGS, + NULL, + }, + { NULL }, +}; + static struct PyGetSetDef Writer_getsetters[] = { { "vendor", @@ -85,5 +119,6 @@ PyTypeObject WriterType = { tp_dealloc: (destructor)Writer_dealloc, tp_init: (initproc)Writer_init, tp_doc: "Writer object", + tp_methods: Writer_methods, tp_getset: Writer_getsetters, }; -- 2.39.2