[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Tue Dec 8 04:03:13 MST 2009


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 <gd at samba.org>
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 <gd at samba.org>
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 <gd at samba.org>
Date:   Mon Dec 7 16:19:26 2009 +0100

    s3-spoolss: cleanup _spoolss_EnumPrinterDrivers().
    
    Guenther

commit 0efbd932b63af0232547571b249fa54de5e1bce2
Author: Günther Deschner <gd at samba.org>
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 <gd at samba.org>
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 <gd at samba.org>
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


More information about the samba-cvs mailing list