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 <[email protected]>
Date:   Thu Feb 19 01:59:57 2009 +0100

    s3-spoolss: remove old spoolss_GetPrinterDriverDirectory.
    
    Guenther

commit 3b3ab50c05483ac32404c4f3e0f9b300c5f406eb
Author: Günther Deschner <[email protected]>
Date:   Thu Feb 19 01:46:17 2009 +0100

    s3-spoolss: use pidl for _spoolss_GetPrinterDriverDirectory.
    
    Guenther

commit aaec578c514842d95ef3affc4f9d66eb422a6a4f
Author: Günther Deschner <[email protected]>
Date:   Thu Feb 19 01:55:39 2009 +0100

    s3-rpcclient: use rpccli_spoolss_GetPrinterDriverDirectory in rpcclient.
    
    Guenther

commit 3089e004fe9d8f4cfee919a95f84b4611837ec87
Author: Günther Deschner <[email protected]>
Date:   Thu Feb 19 02:05:38 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

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

Reply via email to