summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-03-14 01:26:27 +0100
committerGünther Deschner <gd@samba.org>2009-03-17 11:49:08 +0100
commit08d170abc12b72e027b80f22b11213346fb6cf7e (patch)
tree0fe78a261f111b5c330f7581e93340552b8df89e
parent754d136c32372cb9dd604375b98379d9696fb48f (diff)
downloadsamba-08d170abc12b72e027b80f22b11213346fb6cf7e.tar.gz
samba-08d170abc12b72e027b80f22b11213346fb6cf7e.tar.bz2
samba-08d170abc12b72e027b80f22b11213346fb6cf7e.zip
s3-spoolss: add rpccli_spoolss_getprinterdata convenience wrapper.
Guenther
-rw-r--r--source3/include/proto.h9
-rw-r--r--source3/rpc_client/cli_spoolss.c41
2 files changed, 50 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f2929e8296..6c8e4cba8c 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5533,9 +5533,18 @@ WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli,
uint32_t offered,
uint32_t *count,
union spoolss_PrinterInfo **info);
+WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ struct policy_handle *handle,
+ const char *value_name,
+ uint32_t offered,
+ enum winreg_Type *type,
+ union spoolss_PrinterData *data);
+#if 0
WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
POLICY_HND *hnd, const char *valuename,
REGISTRY_VALUE *value);
+#endif
WERROR rpccli_spoolss_setprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
POLICY_HND *hnd, REGISTRY_VALUE *value);
WERROR rpccli_spoolss_enumprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index 76614c67eb..f9cb48195c 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -705,6 +705,47 @@ WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli,
return werror;
}
+/**********************************************************************
+ convencience wrapper around rpccli_spoolss_GetPrinterData
+**********************************************************************/
+
+WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ struct policy_handle *handle,
+ const char *value_name,
+ uint32_t offered,
+ enum winreg_Type *type,
+ union spoolss_PrinterData *data)
+{
+ NTSTATUS status;
+ WERROR werror;
+ uint32_t needed;
+
+ status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,
+ handle,
+ value_name,
+ offered,
+ type,
+ data,
+ &needed,
+ &werror);
+
+ if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
+ offered = needed;
+
+ status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,
+ handle,
+ value_name,
+ offered,
+ type,
+ data,
+ &needed,
+ &werror);
+ }
+
+ return werror;
+}
+
/*********************************************************************
Decode various spoolss rpc's and info levels
********************************************************************/