summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2003-11-27 06:15:06 +0000
committerTim Potter <tpot@samba.org>2003-11-27 06:15:06 +0000
commit4884a97f3b4564fa367598453d7ebc2b24ba6708 (patch)
tree315e925664bc2b1eeee78864a2bf031fbebb5cd7
parentab3d728b7e7b1f3aa878ed5601a45ba08a08eb1f (diff)
downloadsamba-4884a97f3b4564fa367598453d7ebc2b24ba6708.tar.gz
samba-4884a97f3b4564fa367598453d7ebc2b24ba6708.tar.bz2
samba-4884a97f3b4564fa367598453d7ebc2b24ba6708.zip
Implemented AddForm RPC. The mystery of the useless_ptr has been
solved. It was a pointer in a union member. RPC-SPOOLSS tests a bit messy and could do with a cleanup. (This used to be commit cf8cd4485261e861b16b98fb918758ff11282f1d)
-rw-r--r--source4/librpc/idl/spoolss.idl20
-rw-r--r--source4/torture/rpc/spoolss.c20
2 files changed, 39 insertions, 1 deletions
diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl
index 2c318ce4a1..593ea3f202 100644
--- a/source4/librpc/idl/spoolss.idl
+++ b/source4/librpc/idl/spoolss.idl
@@ -304,9 +304,27 @@
[in,out,ref] policy_handle *handle
);
+ typedef struct {
+ uint32 flags;
+ [relative] unistr *name;
+ uint32 width;
+ uint32 length;
+ uint32 left;
+ uint32 top;
+ uint32 right;
+ uint32 bottom;
+ } spoolss_AddFormInfo1;
+
+ typedef union {
+ [case(1)] spoolss_AddFormInfo1 *info1;
+ } spoolss_AddFormInfo;
+
/******************/
/* Function: 0x1e */
- WERROR spoolss_1e(
+ WERROR spoolss_AddForm(
+ [in,ref] policy_handle *handle,
+ [in] uint32 level,
+ [in,switch_is(level)] spoolss_AddFormInfo info
);
/******************/
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 6913290d1a..268288880c 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -122,6 +122,26 @@ BOOL test_GetForm(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
printf("No form info returned");
return False;
}
+
+ {
+ struct spoolss_AddForm af;
+ struct spoolss_AddFormInfo1 form;
+
+ af.in.handle = handle;
+ af.in.level = 1;
+ form.flags = 2;
+ form.name = "testform3";
+ form.width = r.out.info->info1.width;
+ form.length = r.out.info->info1.length;
+ form.left = r.out.info->info1.left;
+ form.top = r.out.info->info1.top;
+ form.right = r.out.info->info1.right;
+ form.bottom = r.out.info->info1.bottom;
+ af.in.info.info1 = &form;
+
+ status = dcerpc_spoolss_AddForm(
+ p, mem_ctx, &af);
+ }
}
return True;