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 <[email protected]>
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 <[email protected]>
Date:   Wed Feb 11 13:08:44 2009 +0100

    s3: remove old copy of SPOOLSS_ADDPRINTERDRIVEREX flags.
    
    Guenther

commit 75306f56c2fc3ed3d3c3c1fdc039c94cd71d6c5a
Author: Günther Deschner <[email protected]>
Date:   Wed Feb 11 13:08:11 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit dba8bb34f9fd94162086cf95a5f4b1dfff2ddef1
Author: Günther Deschner <[email protected]>
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

Reply via email to