summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2009-07-30 20:28:29 +0200
committerJelmer Vernooij <jelmer@samba.org>2009-07-30 20:28:29 +0200
commit8eff9f9a3167eb0c2a4c00edf5a4cdbbc06c4dfd (patch)
tree9900fed04e613bad700608b9d12b681ad447545b
parent6768cfe624fffef13109989e9cc79ccb4df13d19 (diff)
downloadsamba-8eff9f9a3167eb0c2a4c00edf5a4cdbbc06c4dfd.tar.gz
samba-8eff9f9a3167eb0c2a4c00edf5a4cdbbc06c4dfd.tar.bz2
samba-8eff9f9a3167eb0c2a4c00edf5a4cdbbc06c4dfd.zip
python: Cope with the dom_sid2 alias in pidl's python generating code.
This fixes some problems in the samr Python bindings that pidl was (correctly) warning about.
-rw-r--r--pidl/lib/Parse/Pidl/Samba4/Python.pm8
-rwxr-xr-xsource4/scripting/python/examples/samr.py4
2 files changed, 8 insertions, 4 deletions
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index 462f8333e1..78a4ebdb5f 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -766,6 +766,11 @@ sub register_module_import($$)
sub use_type_variable($$)
{
my ($self, $orig_ctype) = @_;
+ # FIXME: Have a global lookup table for types that look different on the
+ # wire than they are named in C?
+ if ($orig_ctype->{NAME} eq "dom_sid2") {
+ $orig_ctype->{NAME} = "dom_sid";
+ }
my $ctype = resolveType($orig_ctype);
unless (defined($ctype->{BASEFILE})) {
return undef;
@@ -840,8 +845,7 @@ sub ConvertObjectFromPythonData($$$$$$;$)
my $ctype_name = $self->use_type_variable($ctype);
unless (defined ($ctype_name)) {
error($location, "Unable to determine origin of type `" . mapTypeName($ctype) . "'");
- $self->assign($target, "NULL");
- # FIXME:
+ $self->pidl("PyErr_SetString(PyExc_TypeError, \"Can not convert C Type " . mapType($ctype) . " to Python\");");
return;
}
$self->pidl("PY_CHECK_TYPE($ctype_name, $cvar, $fail);");
diff --git a/source4/scripting/python/examples/samr.py b/source4/scripting/python/examples/samr.py
index 17ac354320..c0e3167a97 100755
--- a/source4/scripting/python/examples/samr.py
+++ b/source4/scripting/python/examples/samr.py
@@ -67,7 +67,7 @@ def test_EnumDomainUsers(samr, dom_handle):
users = toArray(samr.EnumDomainUsers(dom_handle, 0, 0, -1))
print "Found %d users" % len(users)
for idx, user in users:
- print "\t%s\t(%d)" % (user, idx)
+ print "\t%s\t(%d)" % (user.string, idx)
def test_EnumDomainGroups(samr, dom_handle):
"""test the samr_EnumDomainGroups interface"""
@@ -75,7 +75,7 @@ def test_EnumDomainGroups(samr, dom_handle):
groups = toArray(samr.EnumDomainGroups(dom_handle, 0, 0))
print "Found %d groups" % len(groups)
for idx, group in groups:
- print "\t%s\t(%d)" % (group, idx)
+ print "\t%s\t(%d)" % (group.string, idx)
def test_domain_ops(samr, dom_handle):
"""test domain specific ops"""