[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-797-g2a311b1

Günther Deschner gd at samba.org
Wed Feb 11 21:42:42 GMT 2009


The branch, master has been updated
       via  2a311b1ea7ef2de6adb1567c9afc8127ed8e3978 (commit)
       via  e1a6717110947ba01baa9373f3e9b2d6ea375457 (commit)
       via  75306f56c2fc3ed3d3c3c1fdc039c94cd71d6c5a (commit)
       via  dba8bb34f9fd94162086cf95a5f4b1dfff2ddef1 (commit)
      from  a77605ae83e4234e89cfd4cdff696034e3b981f2 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2a311b1ea7ef2de6adb1567c9afc8127ed8e3978
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 11 15:26:00 2009 +0100

    s3-spoolss: use SPOOLSS_PRINTER_CONTROL flags defined in IDL.
    
    Guenther

commit e1a6717110947ba01baa9373f3e9b2d6ea375457
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 11 13:08:44 2009 +0100

    s3: remove old copy of SPOOLSS_ADDPRINTERDRIVEREX flags.
    
    Guenther

commit 75306f56c2fc3ed3d3c3c1fdc039c94cd71d6c5a
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 11 13:08:11 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit dba8bb34f9fd94162086cf95a5f4b1dfff2ddef1
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 11 13:07:45 2009 +0100

    spoolss: add spoolss_AddPrinterDriverExFlags.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 librpc/gen_ndr/ndr_spoolss.c        |   35 ++++++++++++++++++++++++++++++++---
 librpc/gen_ndr/ndr_spoolss.h        |    1 +
 librpc/gen_ndr/spoolss.h            |   10 ++++++++++
 librpc/idl/spoolss.idl              |   14 +++++++++++++-
 source3/include/rpc_spoolss.h       |   13 -------------
 source3/rpc_server/srv_spoolss_nt.c |    8 ++++----
 6 files changed, 60 insertions(+), 21 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index 2add938..47b61e5 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -10828,6 +10828,35 @@ _PUBLIC_ void ndr_print_spoolss_DeleteDriverFlags(struct ndr_print *ndr, const c
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_spoolss_AddPrinterDriverExFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_spoolss_AddPrinterDriverExFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_spoolss_AddPrinterDriverExFlags(struct ndr_print *ndr, const char *name, uint32_t r)
+{
+	ndr_print_uint32(ndr, name, r);
+	ndr->depth++;
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_STRICT_UPGRADE", APD_STRICT_UPGRADE, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_STRICT_DOWNGRADE", APD_STRICT_DOWNGRADE, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_ALL_FILES", APD_COPY_ALL_FILES, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_NEW_FILES", APD_COPY_NEW_FILES, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_FROM_DIRECTORY", APD_COPY_FROM_DIRECTORY, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_DONT_COPY_FILES_TO_CLUSTER", APD_DONT_COPY_FILES_TO_CLUSTER, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_COPY_TO_ALL_SPOOLERS", APD_COPY_TO_ALL_SPOOLERS, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "APD_RETURN_BLOCKING_STATUS_CODE", APD_RETURN_BLOCKING_STATUS_CODE, r);
+	ndr->depth--;
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push__spoolss_EnumPrinters(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinters *r)
 {
 	if (flags & NDR_IN) {
@@ -18580,7 +18609,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_AddPrinterDriverEx(struct ndr_push *
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
 		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.info, r->in.level));
 		NDR_CHECK(ndr_push_spoolss_AddDriverInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
+		NDR_CHECK(ndr_push_spoolss_AddPrinterDriverExFlags(ndr, NDR_SCALARS, r->in.flags));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
@@ -18601,7 +18630,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_AddPrinterDriverEx(struct ndr_pull *
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
 		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.info, r->in.level));
 		NDR_CHECK(ndr_pull_spoolss_AddDriverInfo(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
+		NDR_CHECK(ndr_pull_spoolss_AddPrinterDriverExFlags(ndr, NDR_SCALARS, &r->in.flags));
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
@@ -18626,7 +18655,7 @@ _PUBLIC_ void ndr_print_spoolss_AddPrinterDriverEx(struct ndr_print *ndr, const
 		ndr_print_uint32(ndr, "level", r->in.level);
 		ndr_print_set_switch_value(ndr, &r->in.info, r->in.level);
 		ndr_print_spoolss_AddDriverInfo(ndr, "info", &r->in.info);
-		ndr_print_uint32(ndr, "flags", r->in.flags);
+		ndr_print_spoolss_AddPrinterDriverExFlags(ndr, "flags", r->in.flags);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
diff --git a/librpc/gen_ndr/ndr_spoolss.h b/librpc/gen_ndr/ndr_spoolss.h
index 60ee538..609c3bf 100644
--- a/librpc/gen_ndr/ndr_spoolss.h
+++ b/librpc/gen_ndr/ndr_spoolss.h
@@ -320,6 +320,7 @@ void ndr_print_spoolss_UserLevel(struct ndr_print *ndr, const char *name, const
 enum ndr_err_code ndr_push_spoolss_DeleteDriverFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r);
 enum ndr_err_code ndr_pull_spoolss_DeleteDriverFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r);
 void ndr_print_spoolss_DeleteDriverFlags(struct ndr_print *ndr, const char *name, uint32_t r);
+void ndr_print_spoolss_AddPrinterDriverExFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 enum ndr_err_code ndr_push__spoolss_EnumPrinters(struct ndr_push *ndr, int flags, const struct _spoolss_EnumPrinters *r);
 enum ndr_err_code ndr_pull__spoolss_EnumPrinters(struct ndr_pull *ndr, int flags, struct _spoolss_EnumPrinters *r);
 void ndr_print__spoolss_EnumPrinters(struct ndr_print *ndr, const char *name, int flags, const struct _spoolss_EnumPrinters *r);
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 61a2367..ce5d6d9 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -903,6 +903,16 @@ union spoolss_UserLevel {
 #define DPD_DELETE_SPECIFIC_VERSION ( 0x00000002 )
 #define DPD_DELETE_ALL_FILES ( 0x00000004 )
 
+/* bitmap spoolss_AddPrinterDriverExFlags */
+#define APD_STRICT_UPGRADE ( 0x00000001 )
+#define APD_STRICT_DOWNGRADE ( 0x00000002 )
+#define APD_COPY_ALL_FILES ( 0x00000004 )
+#define APD_COPY_NEW_FILES ( 0x00000008 )
+#define APD_COPY_FROM_DIRECTORY ( 0x00000010 )
+#define APD_DONT_COPY_FILES_TO_CLUSTER ( 0x00001000 )
+#define APD_COPY_TO_ALL_SPOOLERS ( 0x00002000 )
+#define APD_RETURN_BLOCKING_STATUS_CODE ( 0x00010000 )
+
 
 struct _spoolss_EnumPrinters {
 	struct {
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index af3312a..0a7d46d 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -1751,11 +1751,23 @@ import "misc.idl", "security.idl", "winreg.idl";
 
 	/******************/
 	/* Function: 0x59 */
+
+	typedef [bitmap32bit] bitmap {
+		APD_STRICT_UPGRADE		= 0x00000001,
+		APD_STRICT_DOWNGRADE		= 0x00000002,
+		APD_COPY_ALL_FILES		= 0x00000004,
+		APD_COPY_NEW_FILES		= 0x00000008,
+		APD_COPY_FROM_DIRECTORY		= 0x00000010,
+		APD_DONT_COPY_FILES_TO_CLUSTER	= 0x00001000,
+		APD_COPY_TO_ALL_SPOOLERS	= 0x00002000,
+		APD_RETURN_BLOCKING_STATUS_CODE = 0x00010000
+	} spoolss_AddPrinterDriverExFlags;
+
 	[public] WERROR spoolss_AddPrinterDriverEx(
 		[in] [string,charset(UTF16)] uint16 *servername,
 		[in] uint32 level,
 		[in,switch_is(level)] spoolss_AddDriverInfo info,
-		[in] uint32 flags
+		[in] spoolss_AddPrinterDriverExFlags flags
 	);
 
 	/******************/
diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h
index ac306e6..76f72f0 100644
--- a/source3/include/rpc_spoolss.h
+++ b/source3/include/rpc_spoolss.h
@@ -122,12 +122,6 @@
 #define SPL_XCV_MONITOR_TCPMON    ",XcvMonitor Standard TCP/IP Port"
 
 
-#define PRINTER_CONTROL_UNPAUSE		0x00000000
-#define PRINTER_CONTROL_PAUSE		0x00000001
-#define PRINTER_CONTROL_RESUME		0x00000002
-#define PRINTER_CONTROL_PURGE		0x00000003
-#define PRINTER_CONTROL_SET_STATUS	0x00000004
-
 #define PRINTER_STATUS_OK               0x00000000
 #define JOB_ACCESS_READ			0x00000020
 
@@ -270,13 +264,6 @@ PRINTER_MESSAGE_INFO;
 #define DRIVER_ANY_VERSION		0xffffffff
 #define DRIVER_MAX_VERSION		4
 
-/* FLAGS for SPOOLSS_ADDPRINTERDRIVEREX */
-
-#define APD_STRICT_UPGRADE		0x00000001
-#define APD_STRICT_DOWNGRADE		0x00000002
-#define APD_COPY_ALL_FILES		0x00000004
-#define APD_COPY_NEW_FILES		0x00000008
-
 
 /* this struct is undocumented */
 /* thanks to the ddk ... */
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 204078d..5c4ff61 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -5925,18 +5925,18 @@ static WERROR control_printer(POLICY_HND *handle, uint32 command,
 		return WERR_BADFID;
 
 	switch (command) {
-	case PRINTER_CONTROL_PAUSE:
+	case SPOOLSS_PRINTER_CONTROL_PAUSE:
 		if (print_queue_pause(p->server_info, snum, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
-	case PRINTER_CONTROL_RESUME:
-	case PRINTER_CONTROL_UNPAUSE:
+	case SPOOLSS_PRINTER_CONTROL_RESUME:
+	case SPOOLSS_PRINTER_CONTROL_UNPAUSE:
 		if (print_queue_resume(p->server_info, snum, &errcode)) {
 			errcode = WERR_OK;
 		}
 		break;
-	case PRINTER_CONTROL_PURGE:
+	case SPOOLSS_PRINTER_CONTROL_PURGE:
 		if (print_queue_purge(p->server_info, snum, &errcode)) {
 			errcode = WERR_OK;
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list