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 <[email protected]>
Date:   Mon Nov 17 10:57:49 2008 +0100

    s3-spoolss: remove old _spoolss_DeleteForm.
    
    Guenther

commit f5a24b71b930a6906af5f357de5d0be34f1dead2
Author: Günther Deschner <[email protected]>
Date:   Mon Nov 17 10:56:32 2008 +0100

    s3-spoolss: use pidl for _spoolss_DeleteForm.
    
    Guenther

commit b56c5bf5105ef3ddb1dd7525476323d2f503e59e
Author: Günther Deschner <[email protected]>
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 <[email protected]>
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

Reply via email to