summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/foo.py22
-rw-r--r--source4/librpc/config.mk2
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/Python.pm16
-rw-r--r--source4/scripting/python/config.mk2
-rw-r--r--source4/scripting/python/pytalloc.c7
5 files changed, 42 insertions, 7 deletions
diff --git a/source4/foo.py b/source4/foo.py
new file mode 100644
index 0000000000..0e2d35f080
--- /dev/null
+++ b/source4/foo.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2008
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+from echo import rpcecho
+
+x = rpcecho("ncalrpc:")
diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk
index debfbb6869..e491f69b34 100644
--- a/source4/librpc/config.mk
+++ b/source4/librpc/config.mk
@@ -597,4 +597,4 @@ PUBLIC_DEPENDENCIES = LIBCLI_SMB NDR_MISC LIBSAMBA-UTIL LIBSAMBA-CONFIG dcerpc_s
[PYTHON::python_echo]
OBJ_FILES = gen_ndr/py_echo.o
-PRIVATE_DEPENDENCIES = NDR_ECHO
+PRIVATE_DEPENDENCIES = RPC_NDR_ECHO
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);");
diff --git a/source4/scripting/python/config.mk b/source4/scripting/python/config.mk
index cfd179aff5..f00b477919 100644
--- a/source4/scripting/python/config.mk
+++ b/source4/scripting/python/config.mk
@@ -5,7 +5,7 @@ OBJ_FILES = smbpython.o
[SUBSYSTEM::LIBPYTHON]
PUBLIC_DEPENDENCIES = EXT_LIB_PYTHON
INIT_FUNCTION_SENTINEL = { NULL, NULL }
-OBJ_FILES = modules.o
+OBJ_FILES = modules.o pytalloc.o
[PYTHON::python_uuid]
PRIVATE_DEPENDENCIES = LIBNDR
diff --git a/source4/scripting/python/pytalloc.c b/source4/scripting/python/pytalloc.c
index d0b8cb83f2..dc61a0a13d 100644
--- a/source4/scripting/python/pytalloc.c
+++ b/source4/scripting/python/pytalloc.c
@@ -18,6 +18,7 @@
*/
#include "includes.h"
+#include "scripting/python/pytalloc.h"
void py_talloc_dealloc(PyObject* self)
{
@@ -26,13 +27,13 @@ void py_talloc_dealloc(PyObject* self)
PyObject_Del(self);
}
-PyObject *py_talloc_import(PyTypeObject *py_type, TALLOC_CTX *mem_ctx,
+PyObject *py_talloc_import_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx,
void *ptr)
{
- PyObject *ret = PyObject_New(py_talloc_Object, &py_type);
+ py_talloc_Object *ret = PyObject_New(py_talloc_Object, py_type);
ret->talloc_ctx = talloc_reference(mem_ctx, ptr);
ret->ptr = ptr;
- return ret;
+ return (PyObject *)ret;
}
PyObject *py_talloc_default_repr(PyObject *py_obj)