The branch, master has been updated
       via  1b6c444... spoolss: fix spoolss_DriverInfo8 IDL.
       via  5e8e5df... s4-smbtorture: make level 8 the reference for 
PrinterDriverEnum test.
       via  7770d14... s3-spoolss: cleanup _spoolss_EnumPrinterDrivers().
       via  0efbd93... s3-spoolss: remove unused architecture from 
fill_printer_driver_info1().
       via  af08962... s3-spoolss: remove ridiculous amount of duplicate driver 
code.
       via  1c9eba4... s3-spoolss: fully support level 8 drivers.
      from  35c50dc... s3-spoolss: use driver level info8 everywhere in spoolss 
server internally.

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


- Log -----------------------------------------------------------------
commit 1b6c444557151f5a7d68af99fce1eb197048b47f
Author: Günther Deschner <[email protected]>
Date:   Mon Dec 7 18:55:08 2009 +0100

    spoolss: fix spoolss_DriverInfo8 IDL.
    
    found by RPC-SPOOLSS torture teset.
    
    Guenther

commit 5e8e5dfe889a63747ffbd9429d8115e1715f53e6
Author: Günther Deschner <[email protected]>
Date:   Mon Dec 7 19:26:45 2009 +0100

    s4-smbtorture: make level 8 the reference for PrinterDriverEnum test.
    
    Guenther

commit 7770d1492bad12e778f9f4e0503dcf00983b2bb1
Author: Günther Deschner <[email protected]>
Date:   Mon Dec 7 16:19:26 2009 +0100

    s3-spoolss: cleanup _spoolss_EnumPrinterDrivers().
    
    Guenther

commit 0efbd932b63af0232547571b249fa54de5e1bce2
Author: Günther Deschner <[email protected]>
Date:   Mon Dec 7 16:18:55 2009 +0100

    s3-spoolss: remove unused architecture from fill_printer_driver_info1().
    
    Guenther

commit af08962c94b8f91c8a509881dece5720e914bc45
Author: Günther Deschner <[email protected]>
Date:   Thu Dec 3 19:42:22 2009 +0100

    s3-spoolss: remove ridiculous amount of duplicate driver code.
    
    Guenther

commit 1c9eba40ae8b329182fc3c4f073d1f18b8bad986
Author: Günther Deschner <[email protected]>
Date:   Thu Dec 3 19:11:53 2009 +0100

    s3-spoolss: fully support level 8 drivers.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/ndr_spoolss.c        |  106 ++++----
 librpc/gen_ndr/spoolss.h            |    2 +-
 librpc/idl/spoolss.idl              |    2 +-
 source3/rpc_server/srv_spoolss_nt.c |  516 ++++++++++-------------------------
 source4/torture/rpc/spoolss.c       |  115 +++++---
 5 files changed, 275 insertions(+), 466 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index eba51dc..9a72dd3 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -13192,6 +13192,12 @@ _PUBLIC_ enum ndr_err_code 
ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
                        ndr->flags = _flags_save_string;
                }
                {
+                       uint32_t _flags_save_string_array = ndr->flags;
+                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+                       NDR_CHECK(ndr_push_relative_ptr1(ndr, 
r->dependent_files));
+                       ndr->flags = _flags_save_string_array;
+               }
+               {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, r->monitor_name));
@@ -13206,12 +13212,6 @@ _PUBLIC_ enum ndr_err_code 
ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
                {
                        uint32_t _flags_save_string_array = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_push_relative_ptr1(ndr, 
r->dependent_files));
-                       ndr->flags = _flags_save_string_array;
-               }
-               {
-                       uint32_t _flags_save_string_array = ndr->flags;
-                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        NDR_CHECK(ndr_push_relative_ptr1(ndr, 
r->previous_names));
                        ndr->flags = _flags_save_string_array;
                }
@@ -13332,6 +13332,15 @@ _PUBLIC_ enum ndr_err_code 
ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
                        ndr->flags = _flags_save_string;
                }
                {
+                       uint32_t _flags_save_string_array = ndr->flags;
+                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+                       if (r->dependent_files) {
+                               NDR_CHECK(ndr_push_relative_ptr2(ndr, 
r->dependent_files));
+                               NDR_CHECK(ndr_push_string_array(ndr, 
NDR_SCALARS, r->dependent_files));
+                       }
+                       ndr->flags = _flags_save_string_array;
+               }
+               {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        if (r->monitor_name) {
@@ -13352,15 +13361,6 @@ _PUBLIC_ enum ndr_err_code 
ndr_push_spoolss_DriverInfo8(struct ndr_push *ndr, in
                {
                        uint32_t _flags_save_string_array = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-                       if (r->dependent_files) {
-                               NDR_CHECK(ndr_push_relative_ptr2(ndr, 
r->dependent_files));
-                               NDR_CHECK(ndr_push_string_array(ndr, 
NDR_SCALARS, r->dependent_files));
-                       }
-                       ndr->flags = _flags_save_string_array;
-               }
-               {
-                       uint32_t _flags_save_string_array = ndr->flags;
-                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        if (r->previous_names) {
                                NDR_CHECK(ndr_push_relative_ptr2(ndr, 
r->previous_names));
                                NDR_CHECK(ndr_push_string_array(ndr, 
NDR_SCALARS, r->previous_names));
@@ -13466,12 +13466,12 @@ _PUBLIC_ enum ndr_err_code 
ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
        TALLOC_CTX *_mem_save_config_file_0;
        uint32_t _ptr_help_file;
        TALLOC_CTX *_mem_save_help_file_0;
+       uint32_t _ptr_dependent_files;
+       TALLOC_CTX *_mem_save_dependent_files_0;
        uint32_t _ptr_monitor_name;
        TALLOC_CTX *_mem_save_monitor_name_0;
        uint32_t _ptr_default_datatype;
        TALLOC_CTX *_mem_save_default_datatype_0;
-       uint32_t _ptr_dependent_files;
-       TALLOC_CTX *_mem_save_dependent_files_0;
        uint32_t _ptr_previous_names;
        TALLOC_CTX *_mem_save_previous_names_0;
        uint32_t _ptr_manufacturer_name;
@@ -13568,6 +13568,18 @@ _PUBLIC_ enum ndr_err_code 
ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
                        ndr->flags = _flags_save_string;
                }
                {
+                       uint32_t _flags_save_string_array = ndr->flags;
+                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+                       NDR_CHECK(ndr_pull_generic_ptr(ndr, 
&_ptr_dependent_files));
+                       if (_ptr_dependent_files) {
+                               NDR_PULL_ALLOC(ndr, r->dependent_files);
+                               NDR_CHECK(ndr_pull_relative_ptr1(ndr, 
r->dependent_files, _ptr_dependent_files));
+                       } else {
+                               r->dependent_files = NULL;
+                       }
+                       ndr->flags = _flags_save_string_array;
+               }
+               {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, 
&_ptr_monitor_name));
@@ -13594,18 +13606,6 @@ _PUBLIC_ enum ndr_err_code 
ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
                {
                        uint32_t _flags_save_string_array = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_pull_generic_ptr(ndr, 
&_ptr_dependent_files));
-                       if (_ptr_dependent_files) {
-                               NDR_PULL_ALLOC(ndr, r->dependent_files);
-                               NDR_CHECK(ndr_pull_relative_ptr1(ndr, 
r->dependent_files, _ptr_dependent_files));
-                       } else {
-                               r->dependent_files = NULL;
-                       }
-                       ndr->flags = _flags_save_string_array;
-               }
-               {
-                       uint32_t _flags_save_string_array = ndr->flags;
-                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        NDR_CHECK(ndr_pull_generic_ptr(ndr, 
&_ptr_previous_names));
                        if (_ptr_previous_names) {
                                NDR_PULL_ALLOC(ndr, r->previous_names);
@@ -13840,6 +13840,24 @@ _PUBLIC_ enum ndr_err_code 
ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
                        ndr->flags = _flags_save_string;
                }
                {
+                       uint32_t _flags_save_string_array = ndr->flags;
+                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+                       if (r->dependent_files) {
+                               uint32_t _relative_save_offset;
+                               _relative_save_offset = ndr->offset;
+                               NDR_CHECK(ndr_pull_relative_ptr2(ndr, 
r->dependent_files));
+                               _mem_save_dependent_files_0 = 
NDR_PULL_GET_MEM_CTX(ndr);
+                               NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 
0);
+                               NDR_CHECK(ndr_pull_string_array(ndr, 
NDR_SCALARS, &r->dependent_files));
+                               NDR_PULL_SET_MEM_CTX(ndr, 
_mem_save_dependent_files_0, 0);
+                               if (ndr->offset > ndr->relative_highest_offset) 
{
+                                       ndr->relative_highest_offset = 
ndr->offset;
+                               }
+                               ndr->offset = _relative_save_offset;
+                       }
+                       ndr->flags = _flags_save_string_array;
+               }
+               {
                        uint32_t _flags_save_string = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        if (r->monitor_name) {
@@ -13878,24 +13896,6 @@ _PUBLIC_ enum ndr_err_code 
ndr_pull_spoolss_DriverInfo8(struct ndr_pull *ndr, in
                {
                        uint32_t _flags_save_string_array = ndr->flags;
                        ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-                       if (r->dependent_files) {
-                               uint32_t _relative_save_offset;
-                               _relative_save_offset = ndr->offset;
-                               NDR_CHECK(ndr_pull_relative_ptr2(ndr, 
r->dependent_files));
-                               _mem_save_dependent_files_0 = 
NDR_PULL_GET_MEM_CTX(ndr);
-                               NDR_PULL_SET_MEM_CTX(ndr, r->dependent_files, 
0);
-                               NDR_CHECK(ndr_pull_string_array(ndr, 
NDR_SCALARS, &r->dependent_files));
-                               NDR_PULL_SET_MEM_CTX(ndr, 
_mem_save_dependent_files_0, 0);
-                               if (ndr->offset > ndr->relative_highest_offset) 
{
-                                       ndr->relative_highest_offset = 
ndr->offset;
-                               }
-                               ndr->offset = _relative_save_offset;
-                       }
-                       ndr->flags = _flags_save_string_array;
-               }
-               {
-                       uint32_t _flags_save_string_array = ndr->flags;
-                       ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
                        if (r->previous_names) {
                                uint32_t _relative_save_offset;
                                _relative_save_offset = ndr->offset;
@@ -14118,6 +14118,12 @@ _PUBLIC_ void ndr_print_spoolss_DriverInfo8(struct 
ndr_print *ndr, const char *n
                ndr_print_string(ndr, "help_file", r->help_file);
        }
        ndr->depth--;
+       ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
+       ndr->depth++;
+       if (r->dependent_files) {
+               ndr_print_string_array(ndr, "dependent_files", 
r->dependent_files);
+       }
+       ndr->depth--;
        ndr_print_ptr(ndr, "monitor_name", r->monitor_name);
        ndr->depth++;
        if (r->monitor_name) {
@@ -14130,12 +14136,6 @@ _PUBLIC_ void ndr_print_spoolss_DriverInfo8(struct 
ndr_print *ndr, const char *n
                ndr_print_string(ndr, "default_datatype", r->default_datatype);
        }
        ndr->depth--;
-       ndr_print_ptr(ndr, "dependent_files", r->dependent_files);
-       ndr->depth++;
-       if (r->dependent_files) {
-               ndr_print_string_array(ndr, "dependent_files", 
r->dependent_files);
-       }
-       ndr->depth--;
        ndr_print_ptr(ndr, "previous_names", r->previous_names);
        ndr->depth++;
        if (r->previous_names) {
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index d6c267c..cee9a8f 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -1434,9 +1434,9 @@ struct spoolss_DriverInfo8 {
        const char * data_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
        const char * config_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
        const char * help_file;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
+       const char ** dependent_files;/* 
[relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
        const char * monitor_name;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] 
*/
        const char * default_datatype;/* 
[relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
-       const char ** dependent_files;/* 
[relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
        const char ** previous_names;/* 
[relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */
        NTTIME driver_date;
        uint64_t driver_version;
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index 725166f..f665381 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -1204,9 +1204,9 @@ import "misc.idl", "security.idl", "winreg.idl";
                [relative] nstring *data_file;
                [relative] nstring *config_file;
                [relative] nstring *help_file;
+               [relative] nstring_array *dependent_files;
                [relative] nstring *monitor_name;
                [relative] nstring *default_datatype;
-               [relative] nstring_array *dependent_files;
                [relative] nstring_array *previous_names;
                NTTIME driver_date;
                hyper driver_version;
diff --git a/source3/rpc_server/srv_spoolss_nt.c 
b/source3/rpc_server/srv_spoolss_nt.c
index 1dec824..9abed16 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -4498,8 +4498,7 @@ static const char 
**string_array_from_driver_info(TALLOC_CTX *mem_ctx,
 static WERROR fill_printer_driver_info1(TALLOC_CTX *mem_ctx,
                                        struct spoolss_DriverInfo1 *r,
                                        const struct spoolss_DriverInfo8 
*driver,
-                                       const char *servername,
-                                       const char *architecture)
+                                       const char *servername)
 {
        r->driver_name          = talloc_strdup(mem_ctx, driver->driver_name);
        W_ERROR_HAVE_NO_MEMORY(r->driver_name);
@@ -4747,6 +4746,97 @@ static WERROR fill_printer_driver_info6(TALLOC_CTX 
*mem_ctx,
 }
 
 /********************************************************************
+ * fill a spoolss_DriverInfo8 struct
+ ********************************************************************/
+
+static WERROR fill_printer_driver_info8(TALLOC_CTX *mem_ctx,
+                                       struct spoolss_DriverInfo8 *r,
+                                       const struct spoolss_DriverInfo8 
*driver,
+                                       const char *servername)
+{
+       const char *cservername = canon_servername(servername);
+
+       r->version              = driver->version;
+
+       r->driver_name          = talloc_strdup(mem_ctx, driver->driver_name);
+       W_ERROR_HAVE_NO_MEMORY(r->driver_name);
+       r->architecture         = talloc_strdup(mem_ctx, driver->architecture);
+       W_ERROR_HAVE_NO_MEMORY(r->architecture);
+
+       FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+                              driver->driver_path,
+                              r->driver_path);
+
+       FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+                              driver->data_file,
+                              r->data_file);
+
+       FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+                              driver->config_file,
+                              r->config_file);
+
+       FILL_DRIVER_UNC_STRING(mem_ctx, cservername,
+                              driver->help_file,
+                              r->help_file);
+
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->monitor_name,
+                          r->monitor_name);
+
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->default_datatype,
+                          r->default_datatype);
+
+       r->dependent_files = string_array_from_driver_info(mem_ctx,
+                                                          
driver->dependent_files,
+                                                          cservername);
+       r->previous_names = string_array_from_driver_info(mem_ctx,
+                                                         
driver->previous_names,
+                                                         cservername);
+
+       r->driver_date          = driver->driver_date;
+       r->driver_version       = driver->driver_version;
+
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->manufacturer_name,
+                          r->manufacturer_name);
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->manufacturer_url,
+                          r->manufacturer_url);
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->hardware_id,
+                          r->hardware_id);
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->provider,
+                          r->provider);
+
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->print_processor,
+                          r->print_processor);
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->vendor_setup,
+                          r->vendor_setup);
+
+       r->color_profiles = string_array_from_driver_info(mem_ctx,
+                                                         
driver->color_profiles,
+                                                         cservername);
+
+       FILL_DRIVER_STRING(mem_ctx,
+                          driver->inf_path,
+                          r->inf_path);
+
+       r->printer_driver_attributes    = driver->printer_driver_attributes;
+
+       r->core_driver_dependencies = string_array_from_driver_info(mem_ctx,
+                                                                   
driver->core_driver_dependencies,
+                                                                   
cservername);
+
+       r->min_inbox_driver_ver_date    = driver->min_inbox_driver_ver_date;
+       r->min_inbox_driver_ver_version = driver->min_inbox_driver_ver_version;
+
+       return WERR_OK;
+}
+/********************************************************************
  ********************************************************************/
 
 static WERROR fill_spoolss_DriverFileInfo(TALLOC_CTX *mem_ctx,
@@ -4921,210 +5011,23 @@ static WERROR fill_printer_driver_info101(TALLOC_CTX 
*mem_ctx,
 }
 
 /********************************************************************
- * construct_printer_driver_info_1
  ********************************************************************/
 
-static WERROR construct_printer_driver_info_1(TALLOC_CTX *mem_ctx,
-                                             struct spoolss_DriverInfo1 *r,
-                                             int snum,
-                                             const char *servername,
-                                             const char *architecture,
-                                             uint32_t version)
+static WERROR construct_printer_driver_info_level(TALLOC_CTX *mem_ctx,
+                                                 uint32_t level,
+                                                 union spoolss_DriverInfo *r,
+                                                 int snum,
+                                                 const char *servername,
+                                                 const char *architecture,
+                                                 uint32_t version)
 {
        NT_PRINTER_INFO_LEVEL *printer = NULL;
        struct spoolss_DriverInfo8 *driver;
        WERROR result;
 
-       if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, 
lp_const_servicename(snum))))
-               return WERR_INVALID_PRINTER_NAME;
-
-       if (!W_ERROR_IS_OK(get_a_printer_driver(mem_ctx, &driver, 
printer->info_2->drivername, architecture, version))) {
-               free_a_printer(&printer, 2);
-               return WERR_UNKNOWN_PRINTER_DRIVER;
-       }
-
-       result = fill_printer_driver_info1(mem_ctx, r, driver, servername, 
architecture);
-
-       free_a_printer_driver(driver);
-       free_a_printer(&printer,2);
-
-       return result;
-}
-
-/********************************************************************
- * construct_printer_driver_info_2
- * fill a printer_info_2 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_2(TALLOC_CTX *mem_ctx,
-                                             struct spoolss_DriverInfo2 *r,
-                                             int snum,
-                                             const char *servername,
-                                             const char *architecture,
-                                             uint32_t version)
-{
-       NT_PRINTER_INFO_LEVEL *printer = NULL;
-       struct spoolss_DriverInfo8 *driver;
-       WERROR result;
-
-       ZERO_STRUCT(printer);
-
-       if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, 
lp_const_servicename(snum))))
-               return WERR_INVALID_PRINTER_NAME;
-
-       if (!W_ERROR_IS_OK(get_a_printer_driver(mem_ctx, &driver, 
printer->info_2->drivername, architecture, version))) {
-               free_a_printer(&printer, 2);
-               return WERR_UNKNOWN_PRINTER_DRIVER;
-       }
-
-       result = fill_printer_driver_info2(mem_ctx, r, driver, servername);
-
-       free_a_printer_driver(driver);
-       free_a_printer(&printer,2);
-
-       return result;
-}
-
-/********************************************************************
- * construct_printer_info_3
- * fill a printer_info_3 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_3(TALLOC_CTX *mem_ctx,
-                                             struct spoolss_DriverInfo3 *r,
-                                             int snum,
-                                             const char *servername,
-                                             const char *architecture,
-                                             uint32_t version)
-{
-       NT_PRINTER_INFO_LEVEL *printer = NULL;
-       struct spoolss_DriverInfo8 *driver;
-       WERROR status;
-       ZERO_STRUCT(driver);
-
-       status=get_a_printer(NULL, &printer, 2, lp_const_servicename(snum) );
-       DEBUG(8,("construct_printer_driver_info_3: status: %s\n", 
win_errstr(status)));
-       if (!W_ERROR_IS_OK(status))
-               return WERR_INVALID_PRINTER_NAME;
-
-       status = get_a_printer_driver(mem_ctx, &driver, 
printer->info_2->drivername, architecture, version);
-       DEBUG(8,("construct_printer_driver_info_3: status: %s\n", 
win_errstr(status)));
-
-#if 0  /* JERRY */
-
-       /*
-        * I put this code in during testing.  Helpful when commenting out the
-        * support for DRIVER_INFO_6 in regards to win2k.  Not needed in general
-        * as win2k always queries the driver using an infor level of 6.
-        * I've left it in (but ifdef'd out) because I'll probably
-        * use it in experimentation again in the future.   --jerry 22/01/2002
-        */
-
-       if (!W_ERROR_IS_OK(status)) {
-               /*
-                * Is this a W2k client ?
-                */
-               if (version == 3) {
-                       /* Yes - try again with a WinNT driver. */
-                       version = 2;
-                       status=get_a_printer_driver(&driver, 3, 
printer->info_2->drivername, architecture, version);
-                       DEBUG(8,("construct_printer_driver_info_3: status: 
%s\n", win_errstr(status)));
-               }
-#endif
-
-               if (!W_ERROR_IS_OK(status)) {
-                       free_a_printer(&printer,2);
-                       return WERR_UNKNOWN_PRINTER_DRIVER;
-               }
-
-#if 0  /* JERRY */
-       }
-#endif
-
-
-       status = fill_printer_driver_info3(mem_ctx, r, driver, servername);
-
-       free_a_printer_driver(driver);
-       free_a_printer(&printer,2);
-
-       return status;
-}
-
-/********************************************************************
- * construct_printer_info_6
- * fill a printer_info_6 struct
- ********************************************************************/
-
-static WERROR construct_printer_driver_info_6(TALLOC_CTX *mem_ctx,
-                                             struct spoolss_DriverInfo6 *r,
-                                             int snum,
-                                             const char *servername,
-                                             const char *architecture,
-                                             uint32_t version)
-{
-       NT_PRINTER_INFO_LEVEL           *printer = NULL;
-       struct spoolss_DriverInfo8 *driver;
-       WERROR                          status;
-
-       status=get_a_printer(NULL, &printer, 2, lp_const_servicename(snum) );
-
-       DEBUG(8,("construct_printer_driver_info_6: status: %s\n", 
win_errstr(status)));
-
-       if (!W_ERROR_IS_OK(status))
-               return WERR_INVALID_PRINTER_NAME;
-
-       status = get_a_printer_driver(mem_ctx, &driver, 
printer->info_2->drivername, architecture, version);
-
-       DEBUG(8,("construct_printer_driver_info_6: status: %s\n", 
win_errstr(status)));
-


-- 
Samba Shared Repository

Reply via email to