summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/spoolss.idl17
-rw-r--r--source4/scripting/swig/torture/spoolss.py39
2 files changed, 45 insertions, 11 deletions
diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl
index 204a7ec96c..486fcc6f94 100644
--- a/source4/librpc/idl/spoolss.idl
+++ b/source4/librpc/idl/spoolss.idl
@@ -483,13 +483,28 @@
[in,out,ref] uint32 *buf_size
);
+ typedef struct {
+ uint32 flags;
+ unistr *formname;
+ uint32 width;
+ uint32 length;
+ uint32 left;
+ uint32 top;
+ uint32 right;
+ uint32 bottom;
+ } spoolss_SetFormInfo1;
+
+ typedef union {
+ [case(1)] spoolss_AddFormInfo1 *info1;
+ } spoolss_SetFormInfo;
+
/******************/
/* Function: 0x21 */
WERROR spoolss_SetForm(
[in,ref] policy_handle *handle,
[in] unistr formname,
[in] uint32 level,
- [in,switch_is(level)] spoolss_AddFormInfo info
+ [in,switch_is(level)] spoolss_SetFormInfo info
);
typedef [nodiscriminant,public] union {
diff --git a/source4/scripting/swig/torture/spoolss.py b/source4/scripting/swig/torture/spoolss.py
index 78c74569f5..4c65669d8f 100644
--- a/source4/scripting/swig/torture/spoolss.py
+++ b/source4/scripting/swig/torture/spoolss.py
@@ -129,6 +129,26 @@ def test_GetForm(pipe, handle, formname):
return result['info']['info1']
+def test_SetForm(pipe, handle, form):
+
+ print 'testing spoolss_SetForm'
+
+ r = {}
+ r['handle'] = handle
+ r['level'] = 1
+ r['formname'] = form['info1']['formname']
+ r['info'] = form
+
+ dcerpc.spoolss_SetForm(pipe, r)
+
+ newform = test_GetForm(pipe, handle, r['formname'])
+
+ if form['info1'] != newform:
+ print 'SetForm: mismatch: %s != %s' % \
+ (r['info']['info1'], f)
+ sys.exit(1)
+
+
def test_AddForm(pipe, handle):
print 'testing spoolss_AddForm'
@@ -141,13 +161,13 @@ def test_AddForm(pipe, handle):
r['info'] = {}
r['info']['info1'] = {}
r['info']['info1']['formname'] = formname
- r['info']['info1']['flags'] = 0
- r['info']['info1']['width'] = 1
- r['info']['info1']['length'] = 2
- r['info']['info1']['left'] = 3
- r['info']['info1']['top'] = 4
- r['info']['info1']['right'] = 5
- r['info']['info1']['bottom'] = 6
+ r['info']['info1']['flags'] = 0x0002
+ r['info']['info1']['width'] = 100
+ r['info']['info1']['length'] = 100
+ r['info']['info1']['left'] = 0
+ r['info']['info1']['top'] = 1000
+ r['info']['info1']['right'] = 2000
+ r['info']['info1']['bottom'] = 3000
try:
result = dcerpc.spoolss_AddForm(pipe, r)
@@ -159,14 +179,13 @@ def test_AddForm(pipe, handle):
f = test_GetForm(pipe, handle, formname)
if r['info']['info1'] != f:
- print 'Form type mismatch: %s != %s' % \
+ print 'AddForm: mismatch: %s != %s' % \
(r['info']['info1'], f)
sys.exit(1)
r['formname'] = formname
- r['info']['info1']['unknown'] = 1
- dcerpc.spoolss_SetForm(pipe, r)
+ test_SetForm(pipe, handle, r['info'])
test_DeleteForm(pipe, handle, formname)