svn commit: samba r3410 - in branches/SAMBA_4_0/source: build/pidl scripting/swig scripting/swig/torture

tpot at samba.org tpot at samba.org
Sun Oct 31 11:33:40 GMT 2004


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)
 
 



More information about the samba-cvs mailing list