summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-03-20 15:53:17 +0100
committerGünther Deschner <gd@samba.org>2009-03-20 17:20:33 +0100
commitd2de9b068c19a8eaac64f9cf4ea4aae153cffcd4 (patch)
tree68f5d71cfec1ecad8770d725dc6477fa42a5dc2e
parentaa6dbcfc11b74c1e80728bc295d9612ba4eb1e64 (diff)
downloadsamba-d2de9b068c19a8eaac64f9cf4ea4aae153cffcd4.tar.gz
samba-d2de9b068c19a8eaac64f9cf4ea4aae153cffcd4.tar.bz2
samba-d2de9b068c19a8eaac64f9cf4ea4aae153cffcd4.zip
s3-spoolss: implement enumprinters_level4.
Guenther
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index ebb5ec4671..0d649e8cbf 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -4253,6 +4253,10 @@ static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx,
result = construct_printer_info2(info, ntprinter,
&info[count].info2, snum);
break;
+ case 4:
+ result = construct_printer_info4(info, ntprinter,
+ &info[count].info4, snum);
+ break;
case 5:
result = construct_printer_info5(info, ntprinter,
&info[count].info5, snum);
@@ -4440,6 +4444,22 @@ static WERROR enumprinters_level2(TALLOC_CTX *mem_ctx,
}
/********************************************************************
+ * handle enumeration of printers at level 4
+ ********************************************************************/
+
+static WERROR enumprinters_level4(TALLOC_CTX *mem_ctx,
+ uint32_t flags,
+ const char *servername,
+ union spoolss_PrinterInfo **info,
+ uint32_t *count)
+{
+ DEBUG(4,("enum_all_printers_info_4\n"));
+
+ return enum_all_printers_info_level(mem_ctx, 4, flags, info, count);
+}
+
+
+/********************************************************************
* handle enumeration of printers at level 5
********************************************************************/
@@ -4501,12 +4521,15 @@ WERROR _spoolss_EnumPrinters(pipes_struct *p,
result = enumprinters_level2(p->mem_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
+ case 4:
+ result = enumprinters_level4(p->mem_ctx, r->in.flags, name,
+ r->out.info, r->out.count);
+ break;
case 5:
result = enumprinters_level5(p->mem_ctx, r->in.flags, name,
r->out.info, r->out.count);
break;
case 3:
- case 4:
result = WERR_OK; /* ??? */
break;
default: