diff options
author | Günther Deschner <gd@samba.org> | 2009-04-10 03:28:17 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2009-04-10 13:25:01 +0200 |
commit | 65ee4ae30b952841e97f54c5eaa4d43ca66a02c1 (patch) | |
tree | 322ce7827a9352a4840fad8b4f6449990b3fc890 | |
parent | bcd042e595d63eae8cfc9e9d51e9567a4f9ccc63 (diff) | |
download | samba-65ee4ae30b952841e97f54c5eaa4d43ca66a02c1.tar.gz samba-65ee4ae30b952841e97f54c5eaa4d43ca66a02c1.tar.bz2 samba-65ee4ae30b952841e97f54c5eaa4d43ca66a02c1.zip |
s3-spoolss: add support for level 8 in _spoolss_GetPrinter().
Guenther
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 098e59216b..08c6d4083f 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -4085,6 +4085,39 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, } /******************************************************************** + * construct_printer_info8 + * fill a spoolss_PrinterInfo8 struct + ********************************************************************/ + +static WERROR construct_printer_info8(TALLOC_CTX *mem_ctx, + const NT_PRINTER_INFO_LEVEL *ntprinter, + struct spoolss_DeviceModeInfo *r, + int snum) +{ + struct spoolss_DeviceMode *devmode; + WERROR result; + + if (!ntprinter->info_2->devmode) { + r->devmode = NULL; + return WERR_OK; + } + + devmode = TALLOC_ZERO_P(mem_ctx, struct spoolss_DeviceMode); + W_ERROR_HAVE_NO_MEMORY(devmode); + + result = convert_nt_devicemode(mem_ctx, devmode, ntprinter->info_2->devmode); + if (!W_ERROR_IS_OK(result)) { + TALLOC_FREE(devmode); + return result; + } + + r->devmode = devmode; + + return WERR_OK; +} + + +/******************************************************************** * construct_printer_info1 * fill a spoolss_PrinterInfo1 struct ********************************************************************/ @@ -4636,6 +4669,10 @@ WERROR _spoolss_GetPrinter(pipes_struct *p, result = construct_printer_info7(p->mem_ctx, Printer, &r->out.info->info7, snum); break; + case 8: + result = construct_printer_info8(p->mem_ctx, ntprinter, + &r->out.info->info8, snum); + break; default: result = WERR_UNKNOWN_LEVEL; break; |