Author: tpot Date: 2004-10-31 11:33:40 +0000 (Sun, 31 Oct 2004) New Revision: 3410
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3410 Log: Handle conversion of DATA_BLOBs and pointers to DATA_BLOBs from python. Modified: branches/SAMBA_4_0/source/build/pidl/swig.pm branches/SAMBA_4_0/source/scripting/swig/dcerpc.i branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py Changeset: Modified: branches/SAMBA_4_0/source/build/pidl/swig.pm =================================================================== --- branches/SAMBA_4_0/source/build/pidl/swig.pm 2004-10-31 11:33:30 UTC (rev 3409) +++ branches/SAMBA_4_0/source/build/pidl/swig.pm 2004-10-31 11:33:40 UTC (rev 3410) @@ -97,7 +97,11 @@ } if ($e->{TYPE} eq "DATA_BLOB") { - $result .= "\tDATA_BLOB_ptr_from_python(mem_ctx, &s->$prefix$e->{NAME}, $obj, \"$e->{NAME}\");\n"; + if ($e->{POINTERS} == 0) { + $result .= "\tDATA_BLOB_from_python(mem_ctx, &s->$prefix$e->{NAME}, $obj, \"$e->{NAME}\");\n"; + } else { + $result .= "\tDATA_BLOB_ptr_from_python(mem_ctx, &s->$prefix$e->{NAME}, $obj, \"$e->{NAME}\");\n"; + } return $result; } Modified: branches/SAMBA_4_0/source/scripting/swig/dcerpc.i =================================================================== --- branches/SAMBA_4_0/source/scripting/swig/dcerpc.i 2004-10-31 11:33:30 UTC (rev 3409) +++ branches/SAMBA_4_0/source/scripting/swig/dcerpc.i 2004-10-31 11:33:40 UTC (rev 3410) @@ -254,6 +254,23 @@ #define dom_sid2_ptr_to_python dom_sid_ptr_to_python #define dom_sid2_ptr_from_python dom_sid_ptr_from_python +void DATA_BLOB_from_python(TALLOC_CTX *mem_ctx, DATA_BLOB *s, + PyObject *obj, char name) +{ + if (obj == NULL) { + PyErr_Format(PyExc_ValueError, "Expecting key %s", name); + return; + } + + if (!PyString_Check(obj)) { + PyErr_Format(PyExc_TypeError, "Expecting string value for key '%s'", name); + return; + } + + s->length = PyString_Size(obj); + s->data = PyString_AsString(obj); +} + void DATA_BLOB_ptr_from_python(TALLOC_CTX *mem_ctx, DATA_BLOB **s, PyObject *obj, char *name) { Modified: branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py =================================================================== --- branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py 2004-10-31 11:33:30 UTC (rev 3409) +++ branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py 2004-10-31 11:33:40 UTC (rev 3410) @@ -267,9 +267,33 @@ enum_index += 1 - sys.exit(1) +def test_SetPrinterData(pipe, handle): + print 'testing spoolss_SetPrinterData' + valuename = '__printerdatatest__' + data = '12345' + + r = {} + r['handle'] = handle + r['value_name'] = valuename + r['type'] = 3 # REG_BINARY + r['buffer'] = data + r['real_len'] = 5 + + dcerpc.spoolss_SetPrinterData(pipe, r) + + s = {} + s['handle'] = handle + s['value_name'] = valuename + + result = ResizeBufferCall(dcerpc.spoolss_GetPrinterData, pipe, r) + + if result['buffer'] != data: + print 'SetPrinterData: mismatch' + sys.exit(1) + + def test_EnumPrinters(pipe): print 'testing spoolss_EnumPrinters' @@ -321,6 +345,7 @@ test_AddForm(pipe, handle) test_EnumJobs(pipe, handle) test_EnumPrinterData(pipe, handle) + test_SetPrinterData(pipe, handle) test_ClosePrinter(pipe, handle)