[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-599-g04c971d

Günther Deschner gd at samba.org
Sat Feb 7 01:03:34 GMT 2009


The branch, master has been updated
       via  04c971dc6c5b1f4a621b1a28bdfbb396bc6d1a9e (commit)
       via  f5a24b71b930a6906af5f357de5d0be34f1dead2 (commit)
       via  b56c5bf5105ef3ddb1dd7525476323d2f503e59e (commit)
       via  b8cd20cd5c3ff537d48a05dd04886ced107da7ae (commit)
      from  9bfca0bea0521b41c7bbf1ccbd35ce2e4cbb31ef (commit)

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


- Log -----------------------------------------------------------------
commit 04c971dc6c5b1f4a621b1a28bdfbb396bc6d1a9e
Author: Günther Deschner <gd at samba.org>
Date:   Mon Nov 17 10:57:49 2008 +0100

    s3-spoolss: remove old _spoolss_DeleteForm.
    
    Guenther

commit f5a24b71b930a6906af5f357de5d0be34f1dead2
Author: Günther Deschner <gd at samba.org>
Date:   Mon Nov 17 10:56:32 2008 +0100

    s3-spoolss: use pidl for _spoolss_DeleteForm.
    
    Guenther

commit b56c5bf5105ef3ddb1dd7525476323d2f503e59e
Author: Günther Deschner <gd at samba.org>
Date:   Sat Nov 15 22:17:23 2008 +0100

    s3-spoolss: rework some form functions and add form_by_string functions.
    
    Guenther

commit b8cd20cd5c3ff537d48a05dd04886ced107da7ae
Author: Günther Deschner <gd at samba.org>
Date:   Sat Nov 15 22:16:51 2008 +0100

    s3-spoolss: use rpccli_spoolss_DeleteForm.
    
    Guenther

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

Summary of changes:
 source3/include/proto.h             |    9 +-----
 source3/include/rpc_spoolss.h       |   13 ----------
 source3/printing/nt_printing.c      |   31 ++++++++++++++++-------
 source3/rpc_client/cli_spoolss.c    |   25 -------------------
 source3/rpc_parse/parse_spoolss.c   |   46 -----------------------------------
 source3/rpc_server/srv_spoolss.c    |   22 +----------------
 source3/rpc_server/srv_spoolss_nt.c |   34 ++++++++++----------------
 source3/rpcclient/cmd_spoolss.c     |    9 ++++++-
 8 files changed, 45 insertions(+), 144 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 3aad313..6b4a252 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4788,10 +4788,12 @@ uint32 update_c_setprinter(bool initialize);
 uint32 get_c_setprinter(void);
 int get_builtin_ntforms(nt_forms_struct **list);
 bool get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form);
+bool get_a_builtin_ntform_by_string(const char *form_name, nt_forms_struct *form);
 int get_ntforms(nt_forms_struct **list);
 int write_ntforms(nt_forms_struct **list, int number);
 bool add_a_form(nt_forms_struct **list, const FORM *form, int *count);
 bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret);
+bool delete_a_form_by_string(nt_forms_struct **list, const char *del_name, int *count, WERROR *ret);
 void update_a_form(nt_forms_struct **list, const FORM *form, int count);
 int get_ntdrivers(fstring **list, const char *architecture, uint32 version);
 const char *get_short_archi(const char *long_archi);
@@ -5475,8 +5477,6 @@ WERROR rpccli_spoolss_setform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 WERROR rpccli_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 			   POLICY_HND *handle, const char *formname, 
 			   uint32 level, FORM_1 *form);
-WERROR rpccli_spoolss_deleteform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *handle, const char *form_name);
 WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 			     POLICY_HND *handle, int level, uint32 *num_forms,
 			     FORM_1 **forms);
@@ -6060,8 +6060,6 @@ bool spoolss_io_q_setprinterdata(const char *desc, SPOOL_Q_SETPRINTERDATA *q_u,
 bool spoolss_io_r_setprinterdata(const char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_resetprinter(const char *desc, SPOOL_Q_RESETPRINTER *q_u, prs_struct *ps, int depth);
 bool spoolss_io_r_resetprinter(const char *desc, SPOOL_R_RESETPRINTER *r_u, prs_struct *ps, int depth);
-bool spoolss_io_q_deleteform(const char *desc, SPOOL_Q_DELETEFORM *q_u, prs_struct *ps, int depth);
-bool spoolss_io_r_deleteform(const char *desc, SPOOL_R_DELETEFORM *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_addform(const char *desc, SPOOL_Q_ADDFORM *q_u, prs_struct *ps, int depth);
 bool spoolss_io_r_addform(const char *desc, SPOOL_R_ADDFORM *r_u, prs_struct *ps, int depth);
 bool spoolss_io_q_setform(const char *desc, SPOOL_Q_SETFORM *q_u, prs_struct *ps, int depth);
@@ -6116,8 +6114,6 @@ bool make_spoolss_q_addform(SPOOL_Q_ADDFORM *q_u, POLICY_HND *handle,
 			    int level, FORM *form);
 bool make_spoolss_q_setform(SPOOL_Q_SETFORM *q_u, POLICY_HND *handle, 
 			    int level, const char *form_name, FORM *form);
-bool make_spoolss_q_deleteform(SPOOL_Q_DELETEFORM *q_u, POLICY_HND *handle, 
-			       const char *form);
 bool make_spoolss_q_getform(SPOOL_Q_GETFORM *q_u, POLICY_HND *handle, 
                             const char *formname, uint32 level, 
 			    RPC_BUFFER *buffer, uint32 offered);
@@ -6373,7 +6369,6 @@ WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SP
 WERROR _spoolss_resetprinter(pipes_struct *p, SPOOL_Q_RESETPRINTER *q_u, SPOOL_R_RESETPRINTER *r_u);
 WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_u, SPOOL_R_DELETEPRINTERDATA *r_u);
 WERROR _spoolss_addform( pipes_struct *p, SPOOL_Q_ADDFORM *q_u, SPOOL_R_ADDFORM *r_u);
-WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DELETEFORM *r_u);
 WERROR _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM *r_u);
 WERROR _spoolss_enumprintprocessors(pipes_struct *p, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, SPOOL_R_ENUMPRINTPROCESSORS *r_u);
 WERROR _spoolss_enumprintprocdatatypes(pipes_struct *p, SPOOL_Q_ENUMPRINTPROCDATATYPES *q_u, SPOOL_R_ENUMPRINTPROCDATATYPES *r_u);
diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h
index 1fb683c..c1c24cf 100644
--- a/source3/include/rpc_spoolss.h
+++ b/source3/include/rpc_spoolss.h
@@ -1755,19 +1755,6 @@ typedef struct spool_r_setform
 }
 SPOOL_R_SETFORM;
 
-typedef struct spool_q_deleteform
-{
-	POLICY_HND handle;
-	UNISTR2 name;
-}
-SPOOL_Q_DELETEFORM;
-
-typedef struct spool_r_deleteform
-{
-	WERROR status;
-}
-SPOOL_R_DELETEFORM;
-
 typedef struct spool_q_getjob
 {
 	POLICY_HND handle;
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index bfbc35f..da31945 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -773,11 +773,9 @@ int get_builtin_ntforms(nt_forms_struct **list)
  get a builtin form struct
 ****************************************************************************/
 
-bool get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form)
+bool get_a_builtin_ntform_by_string(const char *form_name, nt_forms_struct *form)
 {
 	int i,count;
-	fstring form_name;
-	unistr2_to_ascii(form_name, uni_formname, sizeof(form_name));
 	DEBUGADD(6,("Looking for builtin form %s \n", form_name));
 	count = sizeof(default_forms) / sizeof(default_forms[0]);
 	for (i=0;i<count;i++) {
@@ -791,6 +789,13 @@ bool get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form)
 	return (i !=count);
 }
 
+bool get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form)
+{
+	fstring form_name;
+	unistr2_to_ascii(form_name, uni_formname, sizeof(form_name));
+	return get_a_builtin_ntform_by_string(form_name, form);
+}
+
 /****************************************************************************
  get a form struct list.
 ****************************************************************************/
@@ -937,25 +942,22 @@ bool add_a_form(nt_forms_struct **list, const FORM *form, int *count)
  Delete a named form struct.
 ****************************************************************************/
 
-bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret)
+bool delete_a_form_by_string(nt_forms_struct **list, const char *del_name, int *count, WERROR *ret)
 {
 	char *key = NULL;
 	int n=0;
-	fstring form_name;
 
 	*ret = WERR_OK;
 
-	unistr2_to_ascii(form_name, del_name, sizeof(form_name));
-
 	for (n=0; n<*count; n++) {
-		if (!strncmp((*list)[n].name, form_name, strlen(form_name))) {
-			DEBUG(103, ("delete_a_form, [%s] in list\n", form_name));
+		if (!strncmp((*list)[n].name, del_name, strlen(del_name))) {
+			DEBUG(103, ("delete_a_form, [%s] in list\n", del_name));
 			break;
 		}
 	}
 
 	if (n == *count) {
-		DEBUG(10,("delete_a_form, [%s] not found\n", form_name));
+		DEBUG(10,("delete_a_form, [%s] not found\n", del_name));
 		*ret = WERR_INVALID_PARAM;
 		return False;
 	}
@@ -973,6 +975,15 @@ bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR
 	return true;
 }
 
+bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret)
+{
+	fstring form_name;
+
+	unistr2_to_ascii(form_name, del_name, sizeof(form_name));
+
+	return delete_a_form_by_string(list, form_name, count, ret);
+}
+
 /****************************************************************************
  Update a form struct.
 ****************************************************************************/
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index dcf4954..d429315 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -1261,31 +1261,6 @@ WERROR rpccli_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 /**********************************************************************
 **********************************************************************/
 
-WERROR rpccli_spoolss_deleteform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-			      POLICY_HND *handle, const char *form_name)
-{
-	prs_struct qbuf, rbuf;
-	SPOOL_Q_DELETEFORM in;
-	SPOOL_R_DELETEFORM out;
-
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-
-        make_spoolss_q_deleteform( &in, handle, form_name );
-	
-	CLI_DO_RPC_WERR( cli, mem_ctx, &syntax_spoolss, SPOOLSS_DELETEFORM,
-	            in, out, 
-	            qbuf, rbuf,
-	            spoolss_io_q_deleteform,
-	            spoolss_io_r_deleteform, 
-	            WERR_GENERAL_FAILURE );
-		    
-	return out.status;
-}
-
-/**********************************************************************
-**********************************************************************/
-
 WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 			     POLICY_HND *handle, int level, uint32 *num_forms,
 			     FORM_1 **forms)
diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c
index 9d2a7ef..01b8156 100644
--- a/source3/rpc_parse/parse_spoolss.c
+++ b/source3/rpc_parse/parse_spoolss.c
@@ -5875,40 +5875,6 @@ static bool spoolss_io_addform(const char *desc, FORM *f, uint32 ptr, prs_struct
 /*******************************************************************
 ********************************************************************/  
 
-bool spoolss_io_q_deleteform(const char *desc, SPOOL_Q_DELETEFORM *q_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_q_deleteform");
-	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("form name", &q_u->name, True, ps, depth))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
-bool spoolss_io_r_deleteform(const char *desc, SPOOL_R_DELETEFORM *r_u, prs_struct *ps, int depth)
-{
-	prs_debug(ps, depth, desc, "spoolss_io_r_deleteform");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_werror("status",	ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/  
-
 bool spoolss_io_q_addform(const char *desc, SPOOL_Q_ADDFORM *q_u, prs_struct *ps, int depth)
 {
 	uint32 useless_ptr=1;
@@ -7083,18 +7049,6 @@ bool make_spoolss_q_setform(SPOOL_Q_SETFORM *q_u, POLICY_HND *handle,
  * init a structure.
  ********************************************************************/
 
-bool make_spoolss_q_deleteform(SPOOL_Q_DELETEFORM *q_u, POLICY_HND *handle, 
-			       const char *form)
-{
-	memcpy(&q_u->handle, handle, sizeof(POLICY_HND));
-	init_unistr2(&q_u->name, form, UNI_STR_TERMINATE);
-	return True;
-}
-
-/*******************************************************************
- * init a structure.
- ********************************************************************/
-
 bool make_spoolss_q_getform(SPOOL_Q_GETFORM *q_u, POLICY_HND *handle, 
                             const char *formname, uint32 level, 
 			    RPC_BUFFER *buffer, uint32 offered)
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index 0e4e73b..4e86e19 100644
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -975,27 +975,7 @@ static bool api_spoolss_addform(pipes_struct *p)
 
 static bool api_spoolss_deleteform(pipes_struct *p)
 {
-	SPOOL_Q_DELETEFORM q_u;
-	SPOOL_R_DELETEFORM 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_deleteform("", &q_u, data, 0)) {
-		DEBUG(0,("spoolss_io_q_deleteform: unable to unmarshall SPOOL_Q_DELETEFORM.\n"));
-		return False;
-	}
-	
-	r_u.status = _spoolss_deleteform(p, &q_u, &r_u);
-	
-	if(!spoolss_io_r_deleteform("", &r_u, rdata, 0)) {
-		DEBUG(0,("spoolss_io_r_deleteform: unable to marshall SPOOL_R_DELETEFORM.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_spoolss_call(p, NDR_SPOOLSS_DELETEFORM);
 }
 
 /****************************************************************************
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 48775a8..2643fe6 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -8519,13 +8519,15 @@ done:
 	return status;
 }
 
-/****************************************************************************
-****************************************************************************/
+/****************************************************************
+ _spoolss_DeleteForm
+****************************************************************/
 
-WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DELETEFORM *r_u)
+WERROR _spoolss_DeleteForm(pipes_struct *p,
+			   struct spoolss_DeleteForm *r)
 {
-	POLICY_HND *handle = &q_u->handle;
-	UNISTR2 *form_name = &q_u->name;
+	POLICY_HND *handle = r->in.handle;
+	const char *form_name = r->in.form_name;
 	nt_forms_struct tmpForm;
 	int count=0;
 	nt_forms_struct *list=NULL;
@@ -8534,10 +8536,11 @@ WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE
 	WERROR status = WERR_OK;
 	NT_PRINTER_INFO_LEVEL *printer = NULL;
 
-	DEBUG(5,("spoolss_deleteform\n"));
+	DEBUG(5,("_spoolss_DeleteForm\n"));
 
 	if (!Printer) {
-		DEBUG(2,("_spoolss_deleteform: Invalid handle (%s:%u:%u).\n", OUR_HANDLE(handle)));
+		DEBUG(2,("_spoolss_DeleteForm: Invalid handle (%s:%u:%u).\n",
+			OUR_HANDLE(handle)));
 		return WERR_BADFID;
 	}
 
@@ -8554,21 +8557,21 @@ WERROR _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE
 	}
 
 	if ( !(Printer->access_granted & (PRINTER_ACCESS_ADMINISTER|SERVER_ACCESS_ADMINISTER)) ) {
-		DEBUG(2,("_spoolss_deleteform: denied by handle permissions.\n"));
+		DEBUG(2,("_spoolss_DeleteForm: denied by handle permissions.\n"));
 		status = WERR_ACCESS_DENIED;
 		goto done;
 	}
 
 	/* can't delete if builtin */
 
-	if (get_a_builtin_ntform(form_name,&tmpForm)) {
+	if (get_a_builtin_ntform_by_string(form_name,&tmpForm)) {
 		status = WERR_INVALID_PARAM;
 		goto done;
 	}
 
 	count = get_ntforms(&list);
 
-	if ( !delete_a_form(&list, form_name, &count, &status ))
+	if ( !delete_a_form_by_string(&list, form_name, &count, &status ))
 		goto done;
 
 	/*
@@ -10222,17 +10225,6 @@ WERROR _spoolss_AddForm(pipes_struct *p,
 }
 
 /****************************************************************
- _spoolss_DeleteForm
-****************************************************************/
-
-WERROR _spoolss_DeleteForm(pipes_struct *p,
-			   struct spoolss_DeleteForm *r)
-{
-	p->rng_fault_state = true;
-	return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
  _spoolss_GetForm
 ****************************************************************/
 
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 057fc25..8003180 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1869,6 +1869,7 @@ static WERROR cmd_spoolss_deleteform(struct rpc_pipe_client *cli,
 {
 	POLICY_HND handle;
 	WERROR werror;
+	NTSTATUS status;
 	char *servername = NULL, *printername = NULL;
 	bool got_handle = False;
 	
@@ -1901,7 +1902,13 @@ static WERROR cmd_spoolss_deleteform(struct rpc_pipe_client *cli,
 
 	/* Delete the form */
 
-	werror = rpccli_spoolss_deleteform(cli, mem_ctx, &handle, argv[2]);
+	status = rpccli_spoolss_DeleteForm(cli, mem_ctx,
+					   &handle,
+					   argv[2],
+					   &werror);
+	if (!NT_STATUS_IS_OK(status)) {
+		return ntstatus_to_werror(status);
+	}
 
  done:
 	if (got_handle)


-- 
Samba Shared Repository


More information about the samba-cvs mailing list