[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-605-g3d68600

Günther Deschner gd at samba.org
Sat Feb 7 09:51:10 GMT 2009


The branch, master has been updated
       via  3d6860018f018e8ad4a8ed1ea8a2cc8f9c639254 (commit)
       via  7f35c3be69bc86b9efd8cc91713a8747b7bad95f (commit)
       via  2038da6897dcbdefbf3b596f049757b6c5e0761c (commit)
       via  b3b06a8b7b8765db85349a5dd14234f878978748 (commit)
      from  6a6eb90803dc47140fda1984e148a98f4bb898da (commit)

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


- Log -----------------------------------------------------------------
commit 3d6860018f018e8ad4a8ed1ea8a2cc8f9c639254
Author: Günther Deschner <gd at samba.org>
Date:   Sat Nov 15 01:29:21 2008 +0100

    s3-spoolss: remove old _spoolss_WritePrinter.
    
    Guenther

commit 7f35c3be69bc86b9efd8cc91713a8747b7bad95f
Author: Günther Deschner <gd at samba.org>
Date:   Sat Nov 15 01:27:44 2008 +0100

    s3-spoolss: use pidl for _spoolss_WritePrinter.
    
    Guenther

commit 2038da6897dcbdefbf3b596f049757b6c5e0761c
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 7 02:08:15 2009 +0100

    s3-spoolss: some cosmetics in debug statements.
    
    Guenther

commit b3b06a8b7b8765db85349a5dd14234f878978748
Author: Günther Deschner <gd at samba.org>
Date:   Sat Feb 7 02:33:48 2009 +0100

    s4-smbtorture: fix test_EnumJobs in spoolss win test.
    
    Guenther

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

Summary of changes:
 source3/include/proto.h             |    9 -----
 source3/include/rpc_spoolss.h       |   16 --------
 source3/rpc_client/cli_spoolss.c    |   29 ---------------
 source3/rpc_parse/parse_spoolss.c   |   68 -----------------------------------
 source3/rpc_server/srv_spoolss.c    |   22 +-----------
 source3/rpc_server/srv_spoolss_nt.c |   45 ++++++++++-------------
 source4/torture/rpc/spoolss_win.c   |    2 +
 7 files changed, 23 insertions(+), 168 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 6b4a252..f07e31c 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5513,9 +5513,6 @@ WERROR rpccli_spoolss_enumprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *m
 WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				     POLICY_HND *hnd, const char *keyname, 
 				     REGVAL_CTR *ctr);
-WERROR rpccli_spoolss_writeprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				POLICY_HND *hnd, uint32 data_size, char *data,
-				uint32 *num_written);
 WERROR rpccli_spoolss_deleteprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				     POLICY_HND *hnd, char *valuename);
 WERROR rpccli_spoolss_deleteprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
@@ -5879,8 +5876,6 @@ bool spoolss_io_q_deleteprinterdriverex(const char *desc, SPOOL_Q_DELETEPRINTERD
 bool spoolss_io_r_deleteprinterdriverex(const char *desc, SPOOL_R_DELETEPRINTERDRIVEREX *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_startdocprinter(const char *desc, SPOOL_Q_STARTDOCPRINTER *q_u, prs_struct *ps, int depth);
 bool spoolss_io_r_startdocprinter(const char *desc, SPOOL_R_STARTDOCPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_writeprinter(const char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_writeprinter(const char *desc, SPOOL_R_WRITEPRINTER *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_rffpcnex(const char *desc, SPOOL_Q_RFFPCNEX *q_u, prs_struct *ps, int depth);
 bool spoolss_io_r_rffpcnex(const char *desc, SPOOL_R_RFFPCNEX *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_rfnpcnex(const char *desc, SPOOL_Q_RFNPCNEX *q_u, prs_struct *ps, int depth);
@@ -6129,9 +6124,6 @@ bool make_spoolss_q_startdocprinter(SPOOL_Q_STARTDOCPRINTER *q_u,
 				    POLICY_HND *handle, uint32 level,
 				    char *docname, char *outputfile,
 				    char *datatype);
-bool make_spoolss_q_writeprinter(SPOOL_Q_WRITEPRINTER *q_u, 
-				 POLICY_HND *handle, uint32 data_size,
-				 char *data);
 bool make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u, 
 				 POLICY_HND *handle, char *valuename);
 bool make_spoolss_q_deleteprinterdataex(SPOOL_Q_DELETEPRINTERDATAEX *q_u, 
@@ -6346,7 +6338,6 @@ WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_
 WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GETPRINTER *r_u);
 WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_u, SPOOL_R_GETPRINTERDRIVER2 *r_u);
 WERROR _spoolss_startdocprinter(pipes_struct *p, SPOOL_Q_STARTDOCPRINTER *q_u, SPOOL_R_STARTDOCPRINTER *r_u);
-WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R_WRITEPRINTER *r_u);
 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 _spoolss_setprinter(pipes_struct *p, SPOOL_Q_SETPRINTER *q_u, SPOOL_R_SETPRINTER *r_u);
diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h
index c1c24cf..6655635 100644
--- a/source3/include/rpc_spoolss.h
+++ b/source3/include/rpc_spoolss.h
@@ -617,22 +617,6 @@ typedef struct spool_r_startdocprinter
 }
 SPOOL_R_STARTDOCPRINTER;
 
-typedef struct spool_q_writeprinter
-{
-	POLICY_HND handle;
-	uint32 buffer_size;
-	uint8 *buffer;
-	uint32 buffer_size2;
-}
-SPOOL_Q_WRITEPRINTER;
-
-typedef struct spool_r_writeprinter
-{
-	uint32 buffer_written;
-	WERROR status;
-}
-SPOOL_R_WRITEPRINTER;
-
 typedef struct spool_notify_option
 {
 	uint32 version;
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index d429315..bdb48a4 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -1788,35 +1788,6 @@ WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, TALLOC_CTX
 /**********************************************************************
 **********************************************************************/
 
-WERROR rpccli_spoolss_writeprinter(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				POLICY_HND *hnd, uint32 data_size, char *data,
-				uint32 *num_written)
-{
-	prs_struct qbuf, rbuf;
-	SPOOL_Q_WRITEPRINTER in;
-	SPOOL_R_WRITEPRINTER out;
-
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-
-        make_spoolss_q_writeprinter( &in, hnd, data_size, data );
-
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_WRITEPRINTER,
-	            in, out, 
-	            qbuf, rbuf,
-	            spoolss_io_q_writeprinter,
-	            spoolss_io_r_writeprinter, 
-	            WERR_GENERAL_FAILURE );
-		    
-	if (num_written)
-		*num_written = out.buffer_written;
-		
-	return out.status;
-}
-
-/**********************************************************************
-**********************************************************************/
-
 WERROR rpccli_spoolss_deleteprinterdata(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				     POLICY_HND *hnd, char *valuename)
 {
diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c
index 01b8156..815b1b6 100644
--- a/source3/rpc_parse/parse_spoolss.c
+++ b/source3/rpc_parse/parse_spoolss.c
@@ -1627,60 +1627,6 @@ bool spoolss_io_r_startdocprinter(const char *desc, SPOOL_R_STARTDOCPRINTER *r_u
 
 /*******************************************************************
  * read a structure.
- * called from spoolss_q_writeprinter (srv_spoolss.c)
- ********************************************************************/
-
-bool spoolss_io_q_writeprinter(const char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_struct *ps, int depth)
-{
-	if (q_u == NULL) return False;
-
-	prs_debug(ps, depth, desc, "spoolss_io_q_writeprinter");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_pol_hnd("printer handle",&q_u->handle,ps,depth))
-		return False;
-	if(!prs_uint32("buffer_size", ps, depth, &q_u->buffer_size))
-		return False;
-	
-	if (q_u->buffer_size!=0)
-	{
-		if (UNMARSHALLING(ps))
-			q_u->buffer=PRS_ALLOC_MEM(ps, uint8, q_u->buffer_size);
-		if(q_u->buffer == NULL)
-			return False;	
-		if(!prs_uint8s(True, "buffer", ps, depth, q_u->buffer, q_u->buffer_size))
-			return False;
-	}
-	if(!prs_align(ps))
-		return False;
-	if(!prs_uint32("buffer_size2", ps, depth, &q_u->buffer_size2))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- * write a structure.
- * called from spoolss_r_writeprinter (srv_spoolss.c)
- ********************************************************************/
-
-bool spoolss_io_r_writeprinter(const char *desc, SPOOL_R_WRITEPRINTER *r_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_r_writeprinter");
-	depth++;
-	if(!prs_uint32("buffer_written", ps, depth, &r_u->buffer_written))
-		return False;
-	if(!prs_werror("status", ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- * read a structure.
  * called from spoolss_q_rffpcnex (srv_spoolss.c)
  ********************************************************************/
 
@@ -7158,20 +7104,6 @@ bool make_spoolss_q_startdocprinter(SPOOL_Q_STARTDOCPRINTER *q_u,
  * init a structure.
  ********************************************************************/
 
-bool make_spoolss_q_writeprinter(SPOOL_Q_WRITEPRINTER *q_u, 
-				 POLICY_HND *handle, uint32 data_size,
-				 char *data)
-{
-        memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
-	q_u->buffer_size = q_u->buffer_size2 = data_size;
-	q_u->buffer = (unsigned char *)data;
-	return True;
-}
-
-/*******************************************************************
- * init a structure.
- ********************************************************************/
-
 bool make_spoolss_q_deleteprinterdata(SPOOL_Q_DELETEPRINTERDATA *q_u, 
 				 POLICY_HND *handle, char *valuename)
 {
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index 4e86e19..dd8bf0d 100644
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -463,27 +463,7 @@ static bool api_spoolss_enddocprinter(pipes_struct *p)
 
 static bool api_spoolss_writeprinter(pipes_struct *p)
 {
-	SPOOL_Q_WRITEPRINTER q_u;
-	SPOOL_R_WRITEPRINTER 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_writeprinter("", &q_u, data, 0)) {
-		DEBUG(0,("spoolss_io_q_writeprinter: unable to unmarshall SPOOL_Q_WRITEPRINTER.\n"));
-		return False;
-	}
-
-	r_u.status = _spoolss_writeprinter(p, &q_u, &r_u);
-
-	if(!spoolss_io_r_writeprinter("",&r_u,rdata,0)) {
-		DEBUG(0,("spoolss_io_r_writeprinter: unable to marshall SPOOL_R_WRITEPRINTER.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_spoolss_call(p, NDR_SPOOLSS_WRITEPRINTER);
 }
 
 /****************************************************************************
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 2643fe6..fd1babe 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -5792,7 +5792,8 @@ WERROR _spoolss_StartPagePrinter(pipes_struct *p,
 	Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
 
 	if (!Printer) {
-		DEBUG(3,("Error in startpageprinter printer handle\n"));
+		DEBUG(3,("_spoolss_StartPagePrinter: "
+			"Error in startpageprinter printer handle\n"));
 		return WERR_BADFID;
 	}
 
@@ -5813,7 +5814,8 @@ WERROR _spoolss_EndPagePrinter(pipes_struct *p,
 	Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
 
 	if (!Printer) {
-		DEBUG(2,("_spoolss_endpageprinter: Invalid handle (%s:%u:%u).\n",OUR_HANDLE(handle)));
+		DEBUG(2,("_spoolss_EndPagePrinter: Invalid handle (%s:%u:%u).\n",
+			OUR_HANDLE(handle)));
 		return WERR_BADFID;
 	}
 
@@ -5900,21 +5902,24 @@ WERROR _spoolss_EndDocPrinter(pipes_struct *p,
 	return _spoolss_enddocprinter_internal(p, handle);
 }
 
-/****************************************************************************
-****************************************************************************/
+/****************************************************************
+ _spoolss_WritePrinter
+****************************************************************/
 
-WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R_WRITEPRINTER *r_u)
+WERROR _spoolss_WritePrinter(pipes_struct *p,
+			     struct spoolss_WritePrinter *r)
 {
-	POLICY_HND *handle = &q_u->handle;
-	uint32 buffer_size = q_u->buffer_size;
-	uint8 *buffer = q_u->buffer;
-	uint32 *buffer_written = &q_u->buffer_size2;
+	POLICY_HND *handle = r->in.handle;
+	uint32 buffer_size = r->in._data_size;
+	uint8 *buffer = r->in.data.data;
+	uint32 *buffer_written = &r->in._data_size;
 	int snum;
 	Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
 
 	if (!Printer) {
-		DEBUG(2,("_spoolss_writeprinter: Invalid handle (%s:%u:%u)\n",OUR_HANDLE(handle)));
-		r_u->buffer_written = q_u->buffer_size2;
+		DEBUG(2,("_spoolss_WritePrinter: Invalid handle (%s:%u:%u)\n",
+			OUR_HANDLE(handle)));
+		*r->out.num_written = r->in._data_size;
 		return WERR_BADFID;
 	}
 
@@ -5924,14 +5929,14 @@ WERROR _spoolss_writeprinter(pipes_struct *p, SPOOL_Q_WRITEPRINTER *q_u, SPOOL_R
 	(*buffer_written) = (uint32)print_job_write(snum, Printer->jobid, (const char *)buffer,
 					(SMB_OFF_T)-1, (size_t)buffer_size);
 	if (*buffer_written == (uint32)-1) {
-		r_u->buffer_written = 0;
+		*r->out.num_written = 0;
 		if (errno == ENOSPC)
 			return WERR_NO_SPOOL_SPACE;
 		else
 			return WERR_ACCESS_DENIED;
 	}
 
-	r_u->buffer_written = q_u->buffer_size2;
+	*r->out.num_written = r->in._data_size;
 
 	return WERR_OK;
 }
@@ -5997,7 +6002,8 @@ WERROR _spoolss_AbortPrinter(pipes_struct *p,
 	WERROR 		errcode = WERR_OK;
 
 	if (!Printer) {
-		DEBUG(2,("_spoolss_abortprinter: Invalid handle (%s:%u:%u)\n",OUR_HANDLE(handle)));
+		DEBUG(2,("_spoolss_AbortPrinter: Invalid handle (%s:%u:%u)\n",
+			OUR_HANDLE(handle)));
 		return WERR_BADFID;
 	}
 
@@ -10137,17 +10143,6 @@ WERROR _spoolss_StartDocPrinter(pipes_struct *p,
 }
 
 /****************************************************************
- _spoolss_WritePrinter
-****************************************************************/
-
-WERROR _spoolss_WritePrinter(pipes_struct *p,
-			     struct spoolss_WritePrinter *r)
-{
-	p->rng_fault_state = true;
-	return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
  _spoolss_ReadPrinter
 ****************************************************************/
 
diff --git a/source4/torture/rpc/spoolss_win.c b/source4/torture/rpc/spoolss_win.c
index ab5adef..df0ab65 100644
--- a/source4/torture/rpc/spoolss_win.c
+++ b/source4/torture/rpc/spoolss_win.c
@@ -260,6 +260,7 @@ static bool test_EnumJobs(struct torture_context *tctx,
 	NTSTATUS status;
 	struct spoolss_EnumJobs ej;
 	DATA_BLOB blob = data_blob_talloc_zero(tctx, 1024);
+	uint32_t needed;
 
 	torture_comment(tctx, "Test EnumJobs\n");
 
@@ -267,6 +268,7 @@ static bool test_EnumJobs(struct torture_context *tctx,
 	ej.in.level = 2;
 	ej.in.buffer = &blob;
 	ej.in.offered = 1024;
+	ej.out.needed = &needed;
 
 	status = dcerpc_spoolss_EnumJobs(p, tctx, &ej);
 	torture_assert_ntstatus_ok(tctx, status, "EnumJobs failed");


-- 
Samba Shared Repository


More information about the samba-cvs mailing list