[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-408-g4aa6b49

Günther Deschner gd at samba.org
Tue Mar 17 11:13:27 GMT 2009


The branch, v3-4-test has been updated
       via  4aa6b49f2d01594d795cc79c8de37121f7f6e5a9 (commit)
       via  d45e83e76a68928feec0a5958c06ffa2a32d776b (commit)
       via  a044cbeb5dc55f188d8e8e3abea5f6b59cae9a52 (commit)
       via  bed498fb2136215c734b4f4a60f557efe83b4ee2 (commit)
       via  300a7fdcf17c0321259f700c58dc8d8b4823886d (commit)
       via  77560e2c880e5e21593d7437443f9189d5e938a3 (commit)
       via  6a4d14132e10df43404d3008cc67ffd7d1ba71b2 (commit)
       via  e7e36c5a9f9ab8ea84b2138435458783df8d4faf (commit)
       via  8dc5c91c300c1fa8508097ee3f5dd92c3a77a2f1 (commit)
       via  dd1b4ee5031af6d3896a02ccf107346a470c9d36 (commit)
       via  1d07e5af1f52cdf6fb0f7ffea84ac67ff596986d (commit)
      from  cab93fe1a22bf6212384a0df48b8ed91d0fdc239 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit 4aa6b49f2d01594d795cc79c8de37121f7f6e5a9
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 17 00:34:59 2009 +0100

    s3-net: fix net_spoolss_setprinterdata.
    
    Guenther
    (cherry picked from commit acf523ad7edcde788ee79144928d74d91f0e0754)

commit d45e83e76a68928feec0a5958c06ffa2a32d776b
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 17 01:47:40 2009 +0100

    s3-net: use rpccli_spoolss_EnumPrinterData.
    
    Guenther
    (cherry picked from commit 2a8c078357dd7bd191d0f2c55d94834c4774ecfc)

commit a044cbeb5dc55f188d8e8e3abea5f6b59cae9a52
Author: Günther Deschner <gd at samba.org>
Date:   Mon Mar 16 15:04:17 2009 +0100

    s3-spoolss: remove spoolss_EnumPrinterData.
    
    Guenther
    (cherry picked from commit ead6a49218845fb7aa8f16147b6787c8811d4b10)

commit bed498fb2136215c734b4f4a60f557efe83b4ee2
Author: Günther Deschner <gd at samba.org>
Date:   Mon Mar 16 14:58:55 2009 +0100

    s3-spoolss: use pidl for _spoolss_EnumPrinterData.
    
    Guenther
    (cherry picked from commit 80ecd11050061c6af30ff770e58af2f1a8291806)

commit 300a7fdcf17c0321259f700c58dc8d8b4823886d
Author: Günther Deschner <gd at samba.org>
Date:   Mon Mar 16 15:02:43 2009 +0100

    s3-spoolss: remove rpccli_spoolss_enumprinterdata.
    
    Guenther
    (cherry picked from commit 57077f43a73cfca9b3ae6ea03ebe457925e4c232)

commit 77560e2c880e5e21593d7437443f9189d5e938a3
Author: Günther Deschner <gd at samba.org>
Date:   Mon Mar 16 15:11:04 2009 +0100

    s3-rpcclient: use rpccli_spoolss_EnumPrinterData in enumdata command.
    
    Guenther
    (cherry picked from commit 3e16ede0c2c73134201948e4018f6acefdca039c)

commit 6a4d14132e10df43404d3008cc67ffd7d1ba71b2
Author: Günther Deschner <gd at samba.org>
Date:   Tue Mar 17 12:01:29 2009 +0100

    s3-net: temporary disable net_spoolss_setprinterdata.
    
    Guenther
    (cherry picked from commit 4ea46d69bbb7651b213c5b0674f4f9fb05059acd)

commit e7e36c5a9f9ab8ea84b2138435458783df8d4faf
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 14 02:26:08 2009 +0100

    s3-spoolss: remove old spoolss_SetPrinterData.
    
    Guenther
    (cherry picked from commit 628c12e53b68e34fa3744f57619aa5351d2519c9)

commit 8dc5c91c300c1fa8508097ee3f5dd92c3a77a2f1
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 14 02:24:47 2009 +0100

    s3-spoolss: use pidl for _spoolss_SetPrinterData.
    
    Guenther
    (cherry picked from commit f9871a846dcac079e33a9478fad5e3491a51e168)

commit dd1b4ee5031af6d3896a02ccf107346a470c9d36
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 14 02:22:59 2009 +0100

    s3-spoolss: remove old rpccli_spoolss_setprinterdata wrapper.
    
    Guenther
    (cherry picked from commit 4234969df7fa973ee798bb656883a75d794006d6)

commit 1d07e5af1f52cdf6fb0f7ffea84ac67ff596986d
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 14 02:21:11 2009 +0100

    s3-rpcclient: use rpccli_spoolss_SetPrinterData.
    
    Guenther
    (cherry picked from commit b8a3e5ea0c8cc6b6b3ad6eda088673e1c8027caf)

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

Summary of changes:
 source3/include/proto.h             |   18 ---
 source3/include/rpc_spoolss.h       |   40 ------
 source3/rpc_client/cli_spoolss.c    |   75 -----------
 source3/rpc_parse/parse_spoolss.c   |  174 --------------------------
 source3/rpc_server/srv_spoolss.c    |   44 +-------
 source3/rpc_server/srv_spoolss_nt.c |  232 ++++++++++++++---------------------
 source3/rpcclient/cmd_spoolss.c     |  187 ++++++++++++++++------------
 source3/utils/net_rpc_printer.c     |   92 +++++++++++---
 8 files changed, 271 insertions(+), 591 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 52cab7c..725f498 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5540,13 +5540,6 @@ WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
 				     uint32_t offered,
 				     enum winreg_Type *type,
 				     union spoolss_PrinterData *data);
-WERROR rpccli_spoolss_setprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd, REGISTRY_VALUE *value);
-WERROR rpccli_spoolss_enumprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				   POLICY_HND *hnd, uint32 ndx,
-				   uint32 value_offered, uint32 data_offered,
-				   uint32 *value_needed, uint32 *data_needed,
-				   REGISTRY_VALUE *value);
 WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				     POLICY_HND *hnd, const char *keyname, 
 				     REGVAL_CTR *ctr);
@@ -5848,18 +5841,9 @@ bool make_systemtime(SYSTEMTIME *systime, struct tm *unixtime);
 bool spoolss_io_devmode(const char *desc, prs_struct *ps, int depth, DEVICEMODE *devmode);
 uint32 spoolss_size_printer_enum_values(PRINTER_ENUM_VALUES *p);
 bool make_spoolss_buffer5(TALLOC_CTX *mem_ctx, BUFFER5 *buf5, uint32 len, uint16 *src);
-bool spoolss_io_r_enumprinterdata(const char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_enumprinterdata(const char *desc, SPOOL_Q_ENUMPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool make_spoolss_q_enumprinterdata(SPOOL_Q_ENUMPRINTERDATA *q_u,
-		const POLICY_HND *hnd,
-		uint32 idx, uint32 valuelen, uint32 datalen);
 bool make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
 				      const POLICY_HND *hnd, const char *key,
 				      uint32 size);
-bool make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND *hnd,
-				   char* value, uint32 data_type, char* data, uint32 data_size);
-bool spoolss_io_q_setprinterdata(const char *desc, SPOOL_Q_SETPRINTERDATA *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_setprinterdata(const char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth);
 bool make_spoolss_q_enumprinterkey(SPOOL_Q_ENUMPRINTERKEY *q_u, 
 				   POLICY_HND *hnd, const char *key, 
 				   uint32 size);
@@ -6066,8 +6050,6 @@ struct spoolss_DeviceMode *construct_dev_mode_new(TALLOC_CTX *mem_ctx,
 WERROR add_port_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const char *portname, const char *uri );
 bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer);
 WERROR enumports_hook(TALLOC_CTX *ctx, int *count, char ***lines );
-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_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPOOL_R_ENUMPRINTERKEY *r_u);
 WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_u, SPOOL_R_ENUMPRINTERDATAEX *r_u);
 
diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h
index ef1cbd1..7c14e73 100644
--- a/source3/include/rpc_spoolss.h
+++ b/source3/include/rpc_spoolss.h
@@ -295,46 +295,6 @@ SYSTEMTIME;
 
 /********************************************/
 
-typedef struct spool_q_enumprinterdata
-{
-	POLICY_HND handle;
-	uint32 index;
-	uint32 valuesize;
-	uint32 datasize;
-}
-SPOOL_Q_ENUMPRINTERDATA;
-
-typedef struct spool_r_enumprinterdata
-{
-	uint32 valuesize;
-	uint16 *value;
-	uint32 realvaluesize;
-	uint32 type;
-	uint32 datasize;
-	uint8 *data;
-	uint32 realdatasize;
-	WERROR status;
-}
-SPOOL_R_ENUMPRINTERDATA;
-
-typedef struct spool_q_setprinterdata
-{
-	POLICY_HND handle;
-	UNISTR2 value;
-	uint32 type;
-	uint32 max_len;
-	uint8 *data;
-	uint32 real_len;
-	uint32 numeric_data;
-}
-SPOOL_Q_SETPRINTERDATA;
-
-typedef struct spool_r_setprinterdata
-{
-	WERROR status;
-}
-SPOOL_R_SETPRINTERDATA;
-
 typedef struct spool_q_enumprinterkey
 {
 	POLICY_HND handle;
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index 3f8e966..66e760c 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -753,81 +753,6 @@ WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
 /**********************************************************************
 **********************************************************************/
 
-WERROR rpccli_spoolss_setprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				  POLICY_HND *hnd, REGISTRY_VALUE *value)
-{
-	prs_struct qbuf, rbuf;
-	SPOOL_Q_SETPRINTERDATA in;
-	SPOOL_R_SETPRINTERDATA out;
-
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-
-        make_spoolss_q_setprinterdata( &in, hnd, value->valuename, 
-		value->type, (char *)value->data_p, value->size);
-
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_SETPRINTERDATA,
-	            in, out, 
-	            qbuf, rbuf,
-	            spoolss_io_q_setprinterdata,
-	            spoolss_io_r_setprinterdata, 
-	            WERR_GENERAL_FAILURE );
-		    
-	return out.status;
-}
-
-/**********************************************************************
-**********************************************************************/
-
-WERROR rpccli_spoolss_enumprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				   POLICY_HND *hnd, uint32 ndx,
-				   uint32 value_offered, uint32 data_offered,
-				   uint32 *value_needed, uint32 *data_needed,
-				   REGISTRY_VALUE *value)
-{
-	prs_struct qbuf, rbuf;
-	SPOOL_Q_ENUMPRINTERDATA in;
-	SPOOL_R_ENUMPRINTERDATA out;
-
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-
-        make_spoolss_q_enumprinterdata( &in, hnd, ndx, value_offered, data_offered );
-
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_ENUMPRINTERDATA,
-	            in, out, 
-	            qbuf, rbuf,
-	            spoolss_io_q_enumprinterdata,
-	            spoolss_io_r_enumprinterdata, 
-	            WERR_GENERAL_FAILURE );
-
-	if ( value_needed )
-		*value_needed = out.realvaluesize;
-	if ( data_needed )
-		*data_needed = out.realdatasize;
-		
-	if (!W_ERROR_IS_OK(out.status))
-		return out.status;
-
-	if (value) {
-		rpcstr_pull(value->valuename, out.value, sizeof(value->valuename), -1,
-			    STR_TERMINATE);
-		if (out.realdatasize) {
-			value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data,
-						       out.realdatasize);
-		} else {
-			value->data_p = NULL;
-		}
-		value->type = out.type;
-		value->size = out.realdatasize;
-	}
-	
-	return out.status;
-}
-
-/**********************************************************************
-**********************************************************************/
-
 WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				     POLICY_HND *hnd, const char *keyname, 
 				     REGVAL_CTR *ctr)
diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c
index a7d69f6..91cb40e 100644
--- a/source3/rpc_parse/parse_spoolss.c
+++ b/source3/rpc_parse/parse_spoolss.c
@@ -313,100 +313,6 @@ bool make_spoolss_buffer5(TALLOC_CTX *mem_ctx, BUFFER5 *buf5, uint32 len, uint16
 /*******************************************************************
 ********************************************************************/  
 
-bool spoolss_io_r_enumprinterdata(const char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_struct *ps, int depth)
-{	
-	prs_debug(ps, depth, desc, "spoolss_io_r_enumprinterdata");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_uint32("valuesize", ps, depth, &r_u->valuesize))
-		return False;
-
-	if (UNMARSHALLING(ps) && r_u->valuesize) {
-		r_u->value = PRS_ALLOC_MEM(ps, uint16, r_u->valuesize);
-		if (!r_u->value) {
-			DEBUG(0, ("spoolss_io_r_enumprinterdata: out of memory for printerdata value\n"));
-			return False;
-		}
-	}
-
-	if(!prs_uint16uni(False, "value", ps, depth, r_u->value, r_u->valuesize ))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("realvaluesize", ps, depth, &r_u->realvaluesize))
-		return False;
-
-	if(!prs_uint32("type", ps, depth, &r_u->type))
-		return False;
-
-	if(!prs_uint32("datasize", ps, depth, &r_u->datasize))
-		return False;
-
-	if (UNMARSHALLING(ps) && r_u->datasize) {
-		r_u->data = PRS_ALLOC_MEM(ps, uint8, r_u->datasize);
-		if (!r_u->data) {
-			DEBUG(0, ("spoolss_io_r_enumprinterdata: out of memory for printerdata data\n"));
-			return False;
-		}
-	}
-
-	if(!prs_uint8s(False, "data", ps, depth, r_u->data, r_u->datasize))
-		return False;
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("realdatasize", ps, depth, &r_u->realdatasize))
-		return False;
-	if(!prs_werror("status", ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
-bool spoolss_io_q_enumprinterdata(const char *desc, SPOOL_Q_ENUMPRINTERDATA *q_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_q_enumprinterdata");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!smb_io_pol_hnd("printer handle",&q_u->handle,ps,depth))
-		return False;
-	if(!prs_uint32("index", ps, depth, &q_u->index))
-		return False;
-	if(!prs_uint32("valuesize", ps, depth, &q_u->valuesize))
-		return False;
-	if(!prs_uint32("datasize", ps, depth, &q_u->datasize))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
-bool make_spoolss_q_enumprinterdata(SPOOL_Q_ENUMPRINTERDATA *q_u,
-		const POLICY_HND *hnd,
-		uint32 idx, uint32 valuelen, uint32 datalen)
-{
-	memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
-	q_u->index=idx;
-	q_u->valuesize=valuelen;
-	q_u->datasize=datalen;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
 bool make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
 				      const POLICY_HND *hnd, const char *key,
 				      uint32 size)
@@ -419,86 +325,6 @@ bool make_spoolss_q_enumprinterdataex(SPOOL_Q_ENUMPRINTERDATAEX *q_u,
 }
 
 /*******************************************************************
-********************************************************************/  
-bool make_spoolss_q_setprinterdata(SPOOL_Q_SETPRINTERDATA *q_u, const POLICY_HND *hnd,
-				   char* value, uint32 data_type, char* data, uint32 data_size)
-{
-	memcpy(&q_u->handle, hnd, sizeof(q_u->handle));
-	q_u->type = data_type;
-	init_unistr2(&q_u->value, value, UNI_STR_TERMINATE);
-
-	q_u->max_len = q_u->real_len = data_size;
-	q_u->data = (unsigned char *)data;
-	
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
-bool spoolss_io_q_setprinterdata(const char *desc, SPOOL_Q_SETPRINTERDATA *q_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_q_setprinterdata");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!smb_io_pol_hnd("printer handle", &q_u->handle, ps, depth))
-		return False;
-	if(!smb_io_unistr2("", &q_u->value, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("type", ps, depth, &q_u->type))
-		return False;
-
-	if(!prs_uint32("max_len", ps, depth, &q_u->max_len))
-		return False;
-
-	switch (q_u->type)
-	{
-		case REG_SZ:
-		case REG_BINARY:
-		case REG_DWORD:
-		case REG_MULTI_SZ:
-			if (q_u->max_len) {
-				if (UNMARSHALLING(ps))
-					q_u->data=PRS_ALLOC_MEM(ps, uint8, q_u->max_len);
-				if(q_u->data == NULL)
-					return False;
-				if(!prs_uint8s(False,"data", ps, depth, q_u->data, q_u->max_len))
-					return False;
-			}
-			if(!prs_align(ps))
-				return False;
-			break;
-	}	
-	
-	if(!prs_uint32("real_len", ps, depth, &q_u->real_len))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
-bool spoolss_io_r_setprinterdata(const char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_r_setprinterdata");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_werror("status",     ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
  * read a structure.
  ********************************************************************/  
 bool make_spoolss_q_enumprinterkey(SPOOL_Q_ENUMPRINTERKEY *q_u, 
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index c7ca223..ced4ed5 100644
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -350,27 +350,7 @@ static bool api_spoolss_getprinterdriverdirectory(pipes_struct *p)
 
 static bool api_spoolss_enumprinterdata(pipes_struct *p)
 {
-	SPOOL_Q_ENUMPRINTERDATA q_u;
-	SPOOL_R_ENUMPRINTERDATA 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_enumprinterdata("", &q_u, data, 0)) {
-		DEBUG(0,("spoolss_io_q_enumprinterdata: unable to unmarshall SPOOL_Q_ENUMPRINTERDATA.\n"));
-		return False;
-	}
-	
-	r_u.status = _spoolss_enumprinterdata(p, &q_u, &r_u);
-				
-	if(!spoolss_io_r_enumprinterdata("", &r_u, rdata, 0)) {
-		DEBUG(0,("spoolss_io_r_enumprinterdata: unable to marshall SPOOL_R_ENUMPRINTERDATA.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_spoolss_call(p, NDR_SPOOLSS_ENUMPRINTERDATA);
 }
 
 /****************************************************************************
@@ -378,27 +358,7 @@ static bool api_spoolss_enumprinterdata(pipes_struct *p)
 
 static bool api_spoolss_setprinterdata(pipes_struct *p)
 {
-	SPOOL_Q_SETPRINTERDATA q_u;
-	SPOOL_R_SETPRINTERDATA 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_setprinterdata("", &q_u, data, 0)) {
-		DEBUG(0,("spoolss_io_q_setprinterdata: unable to unmarshall SPOOL_Q_SETPRINTERDATA.\n"));
-		return False;
-	}
-	
-	r_u.status = _spoolss_setprinterdata(p, &q_u, &r_u);
-				
-	if(!spoolss_io_r_setprinterdata("", &r_u, rdata, 0)) {
-		DEBUG(0,("spoolss_io_r_setprinterdata: unable to marshall SPOOL_R_SETPRINTERDATA.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_spoolss_call(p, NDR_SPOOLSS_SETPRINTERDATA);
 }
 
 /****************************************************************************
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index aee9aa1..83889cf 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -7913,29 +7913,15 @@ WERROR _spoolss_GetPrinterDriverDirectory(pipes_struct *p,
 	return SPOOLSS_BUFFER_OK(WERR_OK, WERR_INSUFFICIENT_BUFFER);
 }
 
-/****************************************************************************
-****************************************************************************/
+/****************************************************************
+ _spoolss_EnumPrinterData
+****************************************************************/
 
-WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, SPOOL_R_ENUMPRINTERDATA *r_u)
+WERROR _spoolss_EnumPrinterData(pipes_struct *p,
+				struct spoolss_EnumPrinterData *r)
 {
-	POLICY_HND *handle = &q_u->handle;
-	uint32 idx 		 = q_u->index;
-	uint32 in_value_len 	 = q_u->valuesize;
-	uint32 in_data_len 	 = q_u->datasize;
-	uint32 *out_max_value_len = &r_u->valuesize;
-	uint16 **out_value 	 = &r_u->value;
-	uint32 *out_value_len 	 = &r_u->realvaluesize;
-	uint32 *out_type 	 = &r_u->type;
-	uint32 *out_max_data_len = &r_u->datasize;
-	uint8  **data_out 	 = &r_u->data;
-	uint32 *out_data_len 	 = &r_u->realdatasize;
-
 	NT_PRINTER_INFO_LEVEL *printer = NULL;
-
-	uint32 		biggest_valuesize;
-	uint32 		biggest_datasize;
-	uint32 		data_len;
-	Printer_entry 	*Printer = find_printer_index_by_hnd(p, handle);
+	Printer_entry 	*Printer = find_printer_index_by_hnd(p, r->in.handle);
 	int 		snum;
 	WERROR 		result;
 	REGISTRY_VALUE	*val = NULL;
@@ -7943,25 +7929,26 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
 	int		i, key_index, num_values;
 	int		name_length;
 
-	*out_type = 0;
-
-	*out_max_data_len = 0;
-	*data_out         = NULL;
-	*out_data_len     = 0;
+	*r->out.value_needed	= 0;
+	*r->out.type		= REG_NONE;
+	*r->out.data_needed	= 0;
 
-	DEBUG(5,("spoolss_enumprinterdata\n"));
+	DEBUG(5,("_spoolss_EnumPrinterData\n"));
 
 	if (!Printer) {
-		DEBUG(2,("_spoolss_enumprinterdata: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
+		DEBUG(2,("_spoolss_EnumPrinterData: Invalid handle (%s:%u:%u).\n",
+			OUR_HANDLE(r->in.handle)));
 		return WERR_BADFID;
 	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list