]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pyparam: expose lpcfg_dump_globals()
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 4 Aug 2022 03:41:25 +0000 (15:41 +1200)
committerDouglas Bagnall <dbagnall@samba.org>
Sat, 6 Aug 2022 00:45:35 +0000 (00:45 +0000)
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 <douglas.bagnall@catalyst.net.nz>
Reviewed-by: David Mulder <dmulder@suse.com>
source4/param/pyparam.c

index e15592b574302e9560406bfbca160c068138f4e4..8f28083819a2d7ac64416454f6184c4439e6efc1 100644 (file)
@@ -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,