[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-981-gcdcd525

Günther Deschner gd at samba.org
Thu Feb 19 01:10:53 GMT 2009


The branch, master has been updated
       via  cdcd525a05ce851dcb338dfa8c9be3009194aa96 (commit)
       via  3b3ab50c05483ac32404c4f3e0f9b300c5f406eb (commit)
       via  aaec578c514842d95ef3affc4f9d66eb422a6a4f (commit)
       via  3089e004fe9d8f4cfee919a95f84b4611837ec87 (commit)
       via  05a0bcc056137fdcbeb17730d07bbb97c41996ae (commit)
      from  8dbb1d63e58d93567c8e23e6f7b70ac51c0e1ec3 (commit)

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


- Log -----------------------------------------------------------------
commit cdcd525a05ce851dcb338dfa8c9be3009194aa96
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 19 01:59:57 2009 +0100

    s3-spoolss: remove old spoolss_GetPrinterDriverDirectory.
    
    Guenther

commit 3b3ab50c05483ac32404c4f3e0f9b300c5f406eb
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 19 01:46:17 2009 +0100

    s3-spoolss: use pidl for _spoolss_GetPrinterDriverDirectory.
    
    Guenther

commit aaec578c514842d95ef3affc4f9d66eb422a6a4f
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 19 01:55:39 2009 +0100

    s3-rpcclient: use rpccli_spoolss_GetPrinterDriverDirectory in rpcclient.
    
    Guenther

commit 3089e004fe9d8f4cfee919a95f84b4611837ec87
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 19 02:05:38 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit 05a0bcc056137fdcbeb17730d07bbb97c41996ae
Author: Günther Deschner <gd at samba.org>
Date:   Thu Feb 19 01:46:49 2009 +0100

    spoolss: make spoolss_DriverDirectoryInfo1 public and gensize.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/ndr_spoolss.c        |    9 ++-
 librpc/gen_ndr/ndr_spoolss.h        |    3 +
 librpc/gen_ndr/spoolss.h            |    2 +-
 librpc/idl/spoolss.idl              |    2 +-
 source3/include/proto.h             |   12 ----
 source3/include/rpc_spoolss.h       |   33 ---------
 source3/rpc_client/cli_spoolss.c    |   89 -------------------------
 source3/rpc_parse/parse_spoolss.c   |  123 -----------------------------------
 source3/rpc_server/srv_spoolss.c    |   22 +------
 source3/rpc_server/srv_spoolss_nt.c |  110 +++++++++++---------------------
 source3/rpcclient/cmd_spoolss.c     |   54 +++++++++++-----
 11 files changed, 87 insertions(+), 372 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index 0709df9..23eccfc 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -10768,7 +10768,7 @@ _PUBLIC_ void ndr_print_spoolss_DriverInfo(struct ndr_print *ndr, const char *na
 	}
 }
 
-static enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverDirectoryInfo1 *r)
+_PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverDirectoryInfo1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
@@ -10784,7 +10784,7 @@ static enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push *
 	return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverDirectoryInfo1 *r)
+_PUBLIC_ enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverDirectoryInfo1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -10808,6 +10808,11 @@ _PUBLIC_ void ndr_print_spoolss_DriverDirectoryInfo1(struct ndr_print *ndr, cons
 	ndr->depth--;
 }
 
+_PUBLIC_ size_t ndr_size_spoolss_DriverDirectoryInfo1(const struct spoolss_DriverDirectoryInfo1 *r, struct smb_iconv_convenience *ic, int flags)
+{
+	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_DriverDirectoryInfo1, ic);
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DriverDirectoryInfo *r)
 {
 	uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);
diff --git a/librpc/gen_ndr/ndr_spoolss.h b/librpc/gen_ndr/ndr_spoolss.h
index 8b0bda5..239ddf2 100644
--- a/librpc/gen_ndr/ndr_spoolss.h
+++ b/librpc/gen_ndr/ndr_spoolss.h
@@ -275,7 +275,10 @@ void ndr_print_spoolss_DriverInfo8(struct ndr_print *ndr, const char *name, cons
 enum ndr_err_code ndr_push_spoolss_DriverInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DriverInfo *r);
 enum ndr_err_code ndr_pull_spoolss_DriverInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_DriverInfo *r);
 void ndr_print_spoolss_DriverInfo(struct ndr_print *ndr, const char *name, const union spoolss_DriverInfo *r);
+enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo1(struct ndr_push *ndr, int ndr_flags, const struct spoolss_DriverDirectoryInfo1 *r);
+enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo1(struct ndr_pull *ndr, int ndr_flags, struct spoolss_DriverDirectoryInfo1 *r);
 void ndr_print_spoolss_DriverDirectoryInfo1(struct ndr_print *ndr, const char *name, const struct spoolss_DriverDirectoryInfo1 *r);
+size_t ndr_size_spoolss_DriverDirectoryInfo1(const struct spoolss_DriverDirectoryInfo1 *r, struct smb_iconv_convenience *ic, int flags);
 enum ndr_err_code ndr_push_spoolss_DriverDirectoryInfo(struct ndr_push *ndr, int ndr_flags, const union spoolss_DriverDirectoryInfo *r);
 enum ndr_err_code ndr_pull_spoolss_DriverDirectoryInfo(struct ndr_pull *ndr, int ndr_flags, union spoolss_DriverDirectoryInfo *r);
 void ndr_print_spoolss_DriverDirectoryInfo(struct ndr_print *ndr, const char *name, const union spoolss_DriverDirectoryInfo *r);
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 2c9aa21..f0f5203 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -801,7 +801,7 @@ union spoolss_DriverInfo {
 
 struct spoolss_DriverDirectoryInfo1 {
 	const char * directory_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
-};
+}/* [gensize,public] */;
 
 union spoolss_DriverDirectoryInfo {
 	struct spoolss_DriverDirectoryInfo1 info1;/* [case] */
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index 534b0b4..b4c5614 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -905,7 +905,7 @@ import "misc.idl", "security.idl", "winreg.idl";
 
 	/******************/
 	/* Function: 0x0c */
-	typedef struct {
+	typedef [public,gensize] struct {
 		nstring directory_name;
 	} spoolss_DriverDirectoryInfo1;
 
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 3da5b98..80db935 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5492,10 +5492,6 @@ WERROR rpccli_spoolss_enumprinterdrivers (struct rpc_pipe_client *cli,
 				       uint32 level, const char *env,
 				       uint32 *num_drivers,
 				       PRINTER_DRIVER_CTR *ctr);
-WERROR rpccli_spoolss_getprinterdriverdir (struct rpc_pipe_client *cli, 
-					TALLOC_CTX *mem_ctx,
-					uint32 level, char *env,
-					DRIVER_DIRECTORY_CTR *ctr);
 WERROR rpccli_spoolss_addprinterdriver (struct rpc_pipe_client *cli, 
 				     TALLOC_CTX *mem_ctx, uint32 level,
 				     PRINTER_DRIVER_CTR *ctr);
@@ -5866,7 +5862,6 @@ bool smb_io_printer_driver_info_6(const char *desc, RPC_BUFFER *buffer, DRIVER_I
 bool smb_io_job_info_1(const char *desc, RPC_BUFFER *buffer, JOB_INFO_1 *info, int depth);
 bool smb_io_job_info_2(const char *desc, RPC_BUFFER *buffer, JOB_INFO_2 *info, int depth);
 bool smb_io_form_1(const char *desc, RPC_BUFFER *buffer, FORM_1 *info, int depth);
-bool smb_io_driverdir_1(const char *desc, RPC_BUFFER *buffer, DRIVER_DIRECTORY_1 *info, int depth);
 bool smb_io_port_1(const char *desc, RPC_BUFFER *buffer, PORT_INFO_1 *info, int depth);
 bool smb_io_port_2(const char *desc, RPC_BUFFER *buffer, PORT_INFO_2 *info, int depth);
 bool smb_io_printprocessor_info_1(const char *desc, RPC_BUFFER *buffer, PRINTPROCESSOR_1 *info, int depth);
@@ -5890,7 +5885,6 @@ uint32 spoolss_size_job_info_1(JOB_INFO_1 *info);
 uint32 spoolss_size_job_info_2(JOB_INFO_2 *info);
 uint32 spoolss_size_form_1(FORM_1 *info);
 uint32 spoolss_size_port_info_1(PORT_INFO_1 *info);
-uint32 spoolss_size_driverdir_info_1(DRIVER_DIRECTORY_1 *info);
 uint32 spoolss_size_printprocessordirectory_info_1(PRINTPROCESSOR_DIRECTORY_1 *info);
 uint32 spoolss_size_port_info_2(PORT_INFO_2 *info);
 uint32 spoolss_size_printprocessor_info_1(PRINTPROCESSOR_1 *info);
@@ -5983,11 +5977,6 @@ bool uni_2_asc_printer_driver_6(SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 *uni,
                                 NT_PRINTER_DRIVER_INFO_LEVEL_6 **asc);
 bool uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
                               NT_PRINTER_INFO_LEVEL_2  *d);
-bool make_spoolss_q_getprinterdriverdir(SPOOL_Q_GETPRINTERDRIVERDIR *q_u,
-                                fstring servername, fstring env_name, uint32 level,
-                                RPC_BUFFER *buffer, uint32 offered);
-bool spoolss_io_q_getprinterdriverdir(const char *desc, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_getprinterdriverdir(const char *desc, SPOOL_R_GETPRINTERDRIVERDIR *r_u, prs_struct *ps, int depth);
 bool spoolss_io_r_enumprintprocessors(const char *desc, SPOOL_R_ENUMPRINTPROCESSORS *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_enumprintprocessors(const char *desc, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, prs_struct *ps, int depth);
 bool spoolss_io_r_enumprintprocdatatypes(const char *desc, SPOOL_R_ENUMPRINTPROCDATATYPES *r_u, prs_struct *ps, int depth);
@@ -6248,7 +6237,6 @@ WERROR enumports_hook(TALLOC_CTX *ctx, int *count, char ***lines );
 WERROR _spoolss_enumports( pipes_struct *p, SPOOL_Q_ENUMPORTS *q_u, SPOOL_R_ENUMPORTS *r_u);
 WERROR _spoolss_addprinterdriver(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVER *q_u, SPOOL_R_ADDPRINTERDRIVER *r_u);
 WERROR _spoolss_addprinterdriverex(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVEREX *q_u, SPOOL_R_ADDPRINTERDRIVEREX *r_u);
-WERROR _spoolss_getprinterdriverdirectory(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, SPOOL_R_GETPRINTERDRIVERDIR *r_u);
 WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, SPOOL_R_ENUMPRINTERDATA *r_u);
 WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SPOOL_R_SETPRINTERDATA *r_u);
 WERROR _spoolss_enumprintprocessors(pipes_struct *p, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, SPOOL_R_ENUMPRINTPROCESSORS *r_u);
diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h
index 8eb8785..24a3377 100644
--- a/source3/include/rpc_spoolss.h
+++ b/source3/include/rpc_spoolss.h
@@ -1194,39 +1194,6 @@ typedef struct spool_r_addprinterdriverex
 }
 SPOOL_R_ADDPRINTERDRIVEREX;
 
-
-typedef struct driver_directory_1
-{
-	UNISTR name;
-}
-DRIVER_DIRECTORY_1;
-
-typedef struct driver_info_ctr_info
-{
-	DRIVER_DIRECTORY_1 *info1;
-}
-DRIVER_DIRECTORY_CTR;
-
-typedef struct spool_q_getprinterdriverdirectory
-{
-	uint32 name_ptr;
-	UNISTR2 name;
-	uint32 environment_ptr;
-	UNISTR2 environment;
-	uint32 level;
-	RPC_BUFFER *buffer;
-	uint32 offered;
-}
-SPOOL_Q_GETPRINTERDRIVERDIR;
-
-typedef struct spool_r_getprinterdriverdirectory
-{
-	RPC_BUFFER *buffer;
-	uint32 needed;
-	WERROR status;
-}
-SPOOL_R_GETPRINTERDRIVERDIR;
-
 typedef struct spool_q_enumprintprocessors
 {
 	uint32 name_ptr;
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index 6ecd722..23ac690 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -395,31 +395,6 @@ static bool decode_printer_driver_3(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer,
 /**********************************************************************
 **********************************************************************/
 
-static bool decode_printerdriverdir_1 (TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer,
-			uint32 returned, DRIVER_DIRECTORY_1 **info
-)
-{
-	DRIVER_DIRECTORY_1 *inf;
- 
-	inf=TALLOC_P(mem_ctx, DRIVER_DIRECTORY_1);
-	if (!inf) {
-		return False;
-	}
-	memset(inf, 0, sizeof(DRIVER_DIRECTORY_1));
-
-	prs_set_offset(&buffer->prs, 0);
-
-	if (!smb_io_driverdir_1("", buffer, inf, 0)) {
-		return False;
-	}
- 
-	*info=inf;
-	return True;
-}
-
-/**********************************************************************
-**********************************************************************/
-
 static bool decode_jobs_1(TALLOC_CTX *mem_ctx, RPC_BUFFER *buffer, 
 			  uint32 num_jobs, JOB_INFO_1 **jobs)
 {
@@ -924,70 +899,6 @@ WERROR rpccli_spoolss_enumprinterdrivers (struct rpc_pipe_client *cli,
 	return out.status;
 }
 
-
-/**********************************************************************
-**********************************************************************/
-
-WERROR rpccli_spoolss_getprinterdriverdir (struct rpc_pipe_client *cli, 
-					TALLOC_CTX *mem_ctx,
-					uint32 level, char *env,
-					DRIVER_DIRECTORY_CTR *ctr)
-{
-	prs_struct qbuf, rbuf;
-	SPOOL_Q_GETPRINTERDRIVERDIR in;
-        SPOOL_R_GETPRINTERDRIVERDIR out;
-	RPC_BUFFER buffer;
-	fstring server;
-	uint32 offered;
-
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-
-        slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
-        strupper_m(server);
-
-	offered = 0;
-	if (!rpcbuf_init(&buffer, offered, mem_ctx))
-		return WERR_NOMEM;
-	make_spoolss_q_getprinterdriverdir( &in, server, env, level, 
-		&buffer, offered );
-
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
-	            in, out, 
-	            qbuf, rbuf,
-	            spoolss_io_q_getprinterdriverdir,
-	            spoolss_io_r_getprinterdriverdir, 
-	            WERR_GENERAL_FAILURE );
-		    
-	if ( W_ERROR_EQUAL( out.status, WERR_INSUFFICIENT_BUFFER ) ) {
-		offered = out.needed;
-		
-		ZERO_STRUCT(in);
-		ZERO_STRUCT(out);
-		
-		if (!rpcbuf_init(&buffer, offered, mem_ctx))
-			return WERR_NOMEM;
-		make_spoolss_q_getprinterdriverdir( &in, server, env, level, 
-			&buffer, offered );
-
-		CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_GETPRINTERDRIVERDIRECTORY,
-		            in, out, 
-		            qbuf, rbuf,
-		            spoolss_io_q_getprinterdriverdir,
-		            spoolss_io_r_getprinterdriverdir, 
-		            WERR_GENERAL_FAILURE );
-	}
-	
-	if (!W_ERROR_IS_OK(out.status))
-		return out.status;
-		
-	if (!decode_printerdriverdir_1(mem_ctx, out.buffer, 1, &ctr->info1)) {
-		return WERR_GENERAL_FAILURE;
-	}
-
-	return out.status;
-}
-
 /**********************************************************************
 **********************************************************************/
 
diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c
index 2862b55..19738cf 100644
--- a/source3/rpc_parse/parse_spoolss.c
+++ b/source3/rpc_parse/parse_spoolss.c
@@ -1960,27 +1960,6 @@ bool smb_io_form_1(const char *desc, RPC_BUFFER *buffer, FORM_1 *info, int depth
 	return True;
 }
 
-
-
-/*******************************************************************
- Parse a DRIVER_DIRECTORY_1 structure.
-********************************************************************/  
-
-bool smb_io_driverdir_1(const char *desc, RPC_BUFFER *buffer, DRIVER_DIRECTORY_1 *info, int depth)
-{
-	prs_struct *ps=&buffer->prs;
-
-	prs_debug(ps, depth, desc, "smb_io_driverdir_1");
-	depth++;
-
-	buffer->struct_start=prs_offset(ps);
-
-	if (!smb_io_unistr(desc, &info->name, ps, depth))
-		return False;
-
-	return True;
-}
-
 /*******************************************************************
  Parse a PORT_INFO_1 structure.
 ********************************************************************/  
@@ -2493,21 +2472,6 @@ uint32 spoolss_size_port_info_1(PORT_INFO_1 *info)
 return the size required by a struct in the stream
 ********************************************************************/  
 
-uint32 spoolss_size_driverdir_info_1(DRIVER_DIRECTORY_1 *info)
-{
-	int size=0;
-
-	size=str_len_uni(&info->name);	/* the string length       */
-	size=size+1;			/* add the leading zero    */
-	size=size*2;			/* convert in char         */
-
-	return size;
-}
-
-/*******************************************************************
-return the size required by a struct in the stream
-********************************************************************/  
-
 uint32 spoolss_size_printprocessordirectory_info_1(PRINTPROCESSOR_DIRECTORY_1 *info)
 {
 	int size=0;
@@ -4351,93 +4315,6 @@ bool uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
 }
 
 /*******************************************************************
- * init a structure.
- ********************************************************************/
-
-bool make_spoolss_q_getprinterdriverdir(SPOOL_Q_GETPRINTERDRIVERDIR *q_u,
-                                fstring servername, fstring env_name, uint32 level,
-                                RPC_BUFFER *buffer, uint32 offered)
-{
-	init_buf_unistr2(&q_u->name, &q_u->name_ptr, servername);
-	init_buf_unistr2(&q_u->environment, &q_u->environment_ptr, env_name);
-
-	q_u->level=level;
-	q_u->buffer=buffer;
-	q_u->offered=offered;
-
-	return True;
-}
-
-/*******************************************************************
- Parse a SPOOL_Q_GETPRINTERDRIVERDIR structure.
-********************************************************************/  
-
-bool spoolss_io_q_getprinterdriverdir(const char *desc, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_q_getprinterdriverdir");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_uint32("name_ptr", ps, depth, &q_u->name_ptr))
-		return False;
-	if(!smb_io_unistr2("", &q_u->name, q_u->name_ptr, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-		
-	if(!prs_uint32("", ps, depth, &q_u->environment_ptr))
-		return False;
-	if(!smb_io_unistr2("", &q_u->environment, q_u->environment_ptr, ps, depth))
-		return False;
-		
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("level", ps, depth, &q_u->level))
-		return False;
-		
-	if(!prs_rpcbuffer_p("", ps, depth, &q_u->buffer))
-		return False;
-		
-	if(!prs_align(ps))
-		return False;
-		
-	if(!prs_uint32("offered", ps, depth, &q_u->offered))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Parse a SPOOL_R_GETPRINTERDRIVERDIR structure.
-********************************************************************/  
-
-bool spoolss_io_r_getprinterdriverdir(const char *desc, SPOOL_R_GETPRINTERDRIVERDIR *r_u, prs_struct *ps, int depth)
-{		
-	prs_debug(ps, depth, desc, "spoolss_io_r_getprinterdriverdir");
-	depth++;
-
-	if (!prs_align(ps))
-		return False;
-		
-	if (!prs_rpcbuffer_p("", ps, depth, &r_u->buffer))
-		return False;
-
-	if (!prs_align(ps))
-		return False;
-		
-	if (!prs_uint32("needed", ps, depth, &r_u->needed))
-		return False;
-		
-	if (!prs_werror("status", ps, depth, &r_u->status))
-		return False;
-
-	return True;		
-}
-
-/*******************************************************************
 ********************************************************************/  
 
 bool spoolss_io_r_enumprintprocessors(const char *desc, SPOOL_R_ENUMPRINTPROCESSORS *r_u, prs_struct *ps, int depth)
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index 10e983e..4074f86 100644
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -575,27 +575,7 @@ static bool api_spoolss_addprinterdriver(pipes_struct *p)
 
 static bool api_spoolss_getprinterdriverdirectory(pipes_struct *p)
 {
-	SPOOL_Q_GETPRINTERDRIVERDIR q_u;
-	SPOOL_R_GETPRINTERDRIVERDIR r_u;
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	if(!spoolss_io_q_getprinterdriverdir("", &q_u, data, 0)) {
-		DEBUG(0,("spoolss_io_q_getprinterdriverdir: unable to unmarshall SPOOL_Q_GETPRINTERDRIVERDIR.\n"));
-		return False;
-	}
-
-	r_u.status = _spoolss_getprinterdriverdirectory(p, &q_u, &r_u);
-
-	if(!spoolss_io_r_getprinterdriverdir("", &r_u, rdata, 0)) {
-		DEBUG(0,("spoolss_io_r_getprinterdriverdir: unable to marshall SPOOL_R_GETPRINTERDRIVERDIR.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_spoolss_call(p, NDR_SPOOLSS_GETPRINTERDRIVERDIRECTORY);
 }
 
 /****************************************************************************
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index d79d18f..d72e270 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -8053,33 +8053,16 @@ WERROR _spoolss_addprinterdriverex(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVEREX *
 /****************************************************************************
 ****************************************************************************/
 
-static void fill_driverdir_1(DRIVER_DIRECTORY_1 *info, char *name)
-{
-	init_unistr(&info->name, name);
-}
-
-/****************************************************************************
-****************************************************************************/
-
-static WERROR getprinterdriverdir_level_1(UNISTR2 *name, UNISTR2 *uni_environment, RPC_BUFFER *buffer, uint32 offered, uint32 *needed)
+static WERROR getprinterdriverdir_level_1(TALLOC_CTX *mem_ctx,
+					  const char *servername,
+					  const char *long_archi,
+					  struct spoolss_DriverDirectoryInfo1 *info1,
+					  uint32_t offered,
+					  uint32_t *needed)
 {
 	char *path = NULL;
-	char *long_archi = NULL;
-	char *servername = NULL;
 	const char *pservername = NULL;
 	const char *short_archi;
-	DRIVER_DIRECTORY_1 *info=NULL;
-	WERROR result = WERR_OK;
-	TALLOC_CTX *ctx = talloc_tos();
-
-	servername = unistr2_to_ascii_talloc(ctx, name);
-	if (!servername) {
-		return WERR_NOMEM;
-	}
-	long_archi = unistr2_to_ascii_talloc(ctx, uni_environment);
-	if (!long_archi) {
-		return WERR_NOMEM;
-	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list