From: Douglas Bagnall Date: Thu, 4 Aug 2022 03:41:25 +0000 (+1200) Subject: pyparam: expose lpcfg_dump_globals() X-Git-Tag: samba-4.17.0rc1~61 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1c6e59a7dfcc0758606db835082bfe789356e382;p=thirdparty%2Fsamba.git pyparam: expose lpcfg_dump_globals() This is needed by samba-tool testparm, in the next commit. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15070 Signed-off-by: Douglas Bagnall Reviewed-by: David Mulder --- diff --git a/source4/param/pyparam.c b/source4/param/pyparam.c index e15592b5743..8f28083819a 100644 --- a/source4/param/pyparam.c +++ b/source4/param/pyparam.c @@ -289,6 +289,37 @@ static PyObject *py_lp_dump(PyObject *self, PyObject *args) Py_RETURN_NONE; } +static PyObject *py_lp_dump_globals(PyObject *self, PyObject *args) +{ + bool show_defaults = false; + const char *file_name = ""; + const char *mode = "w"; + FILE *f; + struct loadparm_context *lp_ctx = PyLoadparmContext_AsLoadparmContext(self); + + if (!PyArg_ParseTuple(args, "|bss", &show_defaults, &file_name, &mode)) + return NULL; + + if (file_name[0] == '\0') { + f = stdout; + } else { + f = fopen(file_name, mode); + } + + if (f == NULL) { + PyErr_SetFromErrno(PyExc_IOError); + return NULL; + } + + lpcfg_dump_globals(lp_ctx, f, show_defaults); + + if (f != stdout) { + fclose(f); + } + + Py_RETURN_NONE; +} + static PyObject *py_lp_dump_a_parameter(PyObject *self, PyObject *args) { char *param_name; @@ -433,6 +464,8 @@ static PyMethodDef py_lp_ctx_methods[] = { "Get the server role." }, { "dump", py_lp_dump, METH_VARARGS, "S.dump(show_defaults=False, file_name='', mode='w')" }, + { "dump_globals", py_lp_dump_globals, METH_VARARGS, + "S.dump_globals(show_defaults=False, file_name='', mode='w')" }, { "dump_a_parameter", py_lp_dump_a_parameter, METH_VARARGS, "S.dump_a_parameter(name, service_name, file_name='', mode='w')" }, { "log_level", py_lp_log_level, METH_NOARGS,