From 65ee4ae30b952841e97f54c5eaa4d43ca66a02c1 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 10 Apr 2009 03:28:17 +0200 Subject: s3-spoolss: add support for level 8 in _spoolss_GetPrinter(). Guenther --- source3/rpc_server/srv_spoolss_nt.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'source3/rpc_server') 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 @@ -4084,6 +4084,39 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, return WERR_OK; } +/******************************************************************** + * 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; -- cgit