diff options
author | Günther Deschner <gd@samba.org> | 2009-02-09 17:56:20 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2009-02-10 11:04:53 +0100 |
commit | b19b6aea1258de18eec6832199f2b736a930b095 (patch) | |
tree | b0c771d19edf3e64a9157e1c58f37c71d49c7f09 | |
parent | 25fc58afcd6051cd387a7114afadab2a85b98cfb (diff) | |
download | samba-b19b6aea1258de18eec6832199f2b736a930b095.tar.gz samba-b19b6aea1258de18eec6832199f2b736a930b095.tar.bz2 samba-b19b6aea1258de18eec6832199f2b736a930b095.zip |
s3-rpcclient: add rpccli_spoolss_openprinter_ex() convenience wrapper.
Guenther
-rw-r--r-- | source3/include/proto.h | 5 | ||||
-rw-r--r-- | source3/rpc_client/cli_spoolss.c | 49 |
2 files changed, 54 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 849bed3b0b..db277ffa42 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -5428,6 +5428,11 @@ NTSTATUS rpccli_try_samr_connects(struct rpc_pipe_client *cli, /* The following definitions come from rpc_client/cli_spoolss.c */ +WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *printername, + uint32_t access_desired, + struct policy_handle *handle); WERROR rpccli_spoolss_open_printer_ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *printername, const char *datatype, uint32 access_required, const char *station, const char *username, POLICY_HND *pol); diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c index 1ad8b5dd61..780043aaab 100644 --- a/source3/rpc_client/cli_spoolss.c +++ b/source3/rpc_client/cli_spoolss.c @@ -25,6 +25,55 @@ #include "includes.h" #include "rpc_client.h" +/********************************************************************** + convencience wrapper around rpccli_spoolss_OpenPrinterEx +**********************************************************************/ + +WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *printername, + uint32_t access_desired, + struct policy_handle *handle) +{ + NTSTATUS status; + WERROR werror; + struct spoolss_DevmodeContainer devmode_ctr; + union spoolss_UserLevel userlevel; + struct spoolss_UserLevel1 level1; + + ZERO_STRUCT(devmode_ctr); + + level1.size = 28; + level1.client = cli->srv_name_slash; + level1.user = cli->auth->user_name; + level1.build = 1381; + level1.major = 2; + level1.minor = 0; + level1.processor = 0; + + userlevel.level1 = &level1; + + status = rpccli_spoolss_OpenPrinterEx(cli, mem_ctx, + printername, + NULL, + devmode_ctr, + access_desired, + 1, /* level */ + userlevel, + handle, + &werror); + + if (!W_ERROR_IS_OK(werror)) { + return werror; + } + + if (!NT_STATUS_IS_OK(status)) { + return ntstatus_to_werror(status); + } + + return WERR_OK; +} + /********************************************************************* Decode various spoolss rpc's and info levels ********************************************************************/ |