summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse/Pidl
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-01-14 02:48:50 +0100
committerJelmer Vernooij <jelmer@samba.org>2008-01-14 19:53:06 +0100
commitd5903fd75e9640831f0e78fc04d3ffa5ea3b1b4a (patch)
tree6849a97abe125f35f7786246f07bc77280e21f4f /source4/pidl/lib/Parse/Pidl
parent2afa1bee549ae119b1088c1e6affaec6f1997887 (diff)
downloadsamba-d5903fd75e9640831f0e78fc04d3ffa5ea3b1b4a.tar.gz
samba-d5903fd75e9640831f0e78fc04d3ffa5ea3b1b4a.tar.bz2
samba-d5903fd75e9640831f0e78fc04d3ffa5ea3b1b4a.zip
pidl/python: Fix compilation of py_echo.
(This used to be commit 5ee99ff31c80ece6861b2a0323d71170ef9346b9)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl')
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/Python.pm16
1 files changed, 14 insertions, 2 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm
index a7e1791793..f569f013dc 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -384,7 +384,7 @@ sub PythonType($$$)
$self->EnumAndBitmapConsts($d->{NAME}, $d->{DATA});
}
- if ($actual_ctype->{TYPE} eq "UNION") {
+ if ($actual_ctype->{TYPE} eq "UNION" and defined($actual_ctype->{ELEMENTS})) {
$self->pidl("PyObject *py_import_$d->{NAME}(int level, " .mapTypeName($d) . " *in)");
$self->pidl("{");
$self->indent;
@@ -486,7 +486,7 @@ sub Interface($$$)
$self->pidl("");
$self->register_module_method($interface->{NAME}, "interface_$interface->{NAME}", "METH_VARARGS|METH_KEYWORDS", "NULL");
- $self->pidl("static PyObject *interface_$interface->{NAME}(PyObject *self, PyObject *args)");
+ $self->pidl("static PyObject *interface_$interface->{NAME}(PyObject *self, PyObject *args, PyObject *kwargs)");
$self->pidl("{");
$self->indent;
$self->pidl("$interface->{NAME}_InterfaceObject *ret;");
@@ -496,6 +496,18 @@ sub Interface($$$)
$self->pidl("TALLOC_CTX *mem_ctx = NULL;");
$self->pidl("NTSTATUS status;");
$self->pidl("");
+ $self->pidl("const char *kwnames[] = {");
+ $self->indent;
+ $self->pidl("\"binding\", NULL");
+ $self->deindent;
+ $self->pidl("};");
+ $self->pidl("");
+ $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s:$interface->{NAME}\", discard_const_p(char *, kwnames), &binding_string)) {");
+ $self->indent;
+ $self->pidl("return NULL;");
+ $self->deindent;
+ $self->pidl("}");
+ $self->pidl("");
# FIXME: Arguments: binding string, credentials, loadparm context
$self->pidl("ret = PyObject_New($interface->{NAME}_InterfaceObject, &$interface->{NAME}_InterfaceType);");