The branch, v3-4-test has been updated
       via  8630f2cbdfaaf8260615f16ba360b1281b666df5 (commit)
       via  53965d391c08cc3b935f5bd86d2d95bb6fe89262 (commit)
       via  48df86ca7f6d59b530597621862a619813a0568f (commit)
       via  ebf6d6d956a60c4f95baa4e148573bde933bdb2d (commit)
       via  ce1b736da021858273a1daff0246e0740bc67620 (commit)
       via  e0cdb435d38c643d5a75aa16e793c6f09a349978 (commit)
       via  f9eb007d64e155d561cd257d3d6e09b267299a0b (commit)
      from  0ec1350d3d9272a6070950ba1d460523f53a628d (commit)

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


- Log -----------------------------------------------------------------
commit 8630f2cbdfaaf8260615f16ba360b1281b666df5
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 16:03:54 2009 +0100

    s3-spoolss: _spoolss_EnumPrinters level 3 always returns WERR_UNKNOWN_LEVEL.
    
    Guenther
    (cherry picked from commit 19de802c171f70ec4de102452afac52e2c0e548f)

commit 53965d391c08cc3b935f5bd86d2d95bb6fe89262
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 15:53:17 2009 +0100

    s3-spoolss: implement enumprinters_level4.
    
    Guenther
    (cherry picked from commit d2de9b068c19a8eaac64f9cf4ea4aae153cffcd4)

commit 48df86ca7f6d59b530597621862a619813a0568f
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 15:49:57 2009 +0100

    s3-spoolss: implement enumprinters_level5.
    
    Guenther
    (cherry picked from commit aa6dbcfc11b74c1e80728bc295d9612ba4eb1e64)

commit ebf6d6d956a60c4f95baa4e148573bde933bdb2d
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 15:48:10 2009 +0100

    s3-spoolss: use enum_all_printers_info_level for level 1 and 2.
    
    Guenther
    (cherry picked from commit 6713244d465b0cf69f1bba15744e05795ec2fda9)

commit ce1b736da021858273a1daff0246e0740bc67620
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 15:44:31 2009 +0100

    s3-spoolss: add enum_all_printers_info_level().
    
    Guenther
    (cherry picked from commit 95f2913c7de2ac69421911ec2cb0fcbb8c4e8e93)

commit e0cdb435d38c643d5a75aa16e793c6f09a349978
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 15:14:09 2009 +0100

    s3-spoolss: apply some const in spoolss server.
    
    Guenther
    (cherry picked from commit 5a388115a944a425a774d7ec98260b7595998ee1)

commit f9eb007d64e155d561cd257d3d6e09b267299a0b
Author: Günther Deschner <g...@samba.org>
Date:   Fri Mar 20 14:47:13 2009 +0100

    s3-rpcclient: allow to set flags in enumprinters command.
    
    Guenther
    (cherry picked from commit c9a388348a2d4b276448b6a7bfc8c575b99f8eb7)

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

Summary of changes:
 source3/include/proto.h             |    6 +-
 source3/printing/nt_printing.c      |   11 +-
 source3/rpc_server/srv_spoolss_nt.c |  245 ++++++++++++++++++-----------------
 source3/rpcclient/cmd_spoolss.c     |   13 ++-
 4 files changed, 142 insertions(+), 133 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 9bffa4d..dc26f6d 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4828,7 +4828,7 @@ WERROR add_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, 
const char *key, const cha
 REGISTRY_VALUE* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char 
*key, const char *value );
 WERROR mod_a_printer(NT_PRINTER_INFO_LEVEL *printer, uint32 level);
 bool set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level);
-bool del_driver_init(char *drivername);
+bool del_driver_init(const char *drivername);
 WERROR save_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level, uint8 
*data, uint32 data_len);
 WERROR get_a_printer( Printer_entry *print_hnd,
                        NT_PRINTER_INFO_LEVEL **pp_printer,
@@ -4840,8 +4840,8 @@ WERROR get_a_printer_search( Printer_entry *print_hnd,
                        const char *sharename);
 uint32 free_a_printer(NT_PRINTER_INFO_LEVEL **pp_printer, uint32 level);
 uint32 add_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
-WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
-                            fstring drivername, const char *architecture, 
uint32 version);
+WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32_t 
level,
+                           const char *drivername, const char *architecture, 
uint32_t version);
 uint32 free_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 
level);
 bool printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 );
 bool printer_driver_files_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info );
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 8e6fe1f..a99485d 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -2275,7 +2275,9 @@ static WERROR 
get_a_printer_driver_3_default(NT_PRINTER_DRIVER_INFO_LEVEL_3 **in
 
 /****************************************************************************
 ****************************************************************************/
-static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 
**info_ptr, fstring drivername, const char *arch, uint32 version)
+static WERROR get_a_printer_driver_3(NT_PRINTER_DRIVER_INFO_LEVEL_3 **info_ptr,
+                                    const char *drivername, const char *arch,
+                                    uint32_t version)
 {
        NT_PRINTER_DRIVER_INFO_LEVEL_3 driver;
        TDB_DATA dbuf;
@@ -4448,7 +4450,7 @@ bool set_driver_init(NT_PRINTER_INFO_LEVEL *printer, 
uint32 level)
  Delete driver init data stored for a specified driver
 ****************************************************************************/
 
-bool del_driver_init(char *drivername)
+bool del_driver_init(const char *drivername)
 {
        char *key;
        bool ret;
@@ -4837,8 +4839,9 @@ uint32 add_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL 
driver, uint32 level)
 /****************************************************************************
 ****************************************************************************/
 
-WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
-                            fstring drivername, const char *architecture, 
uint32 version)
+WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32_t 
level,
+                           const char *drivername, const char *architecture,
+                           uint32_t version)
 {
        WERROR result;
 
diff --git a/source3/rpc_server/srv_spoolss_nt.c 
b/source3/rpc_server/srv_spoolss_nt.c
index b66f48a..a8d414b 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -393,7 +393,7 @@ static bool get_printer_snum(pipes_struct *p, struct 
policy_handle *hnd,
  Check if it's \\server or \\server\printer
 ****************************************************************************/
 
-static bool set_printer_hnd_printertype(Printer_entry *Printer, char 
*handlename)
+static bool set_printer_hnd_printertype(Printer_entry *Printer, const char 
*handlename)
 {
        DEBUG(3,("Setting printer type=%s\n", handlename));
 
@@ -423,7 +423,7 @@ static bool set_printer_hnd_printertype(Printer_entry 
*Printer, char *handlename
  XcvDataPort() interface.
 ****************************************************************************/
 
-static bool set_printer_hnd_name(Printer_entry *Printer, char *handlename)
+static bool set_printer_hnd_name(Printer_entry *Printer, const char 
*handlename)
 {
        int snum;
        int n_services=lp_numservices();
@@ -434,9 +434,10 @@ static bool set_printer_hnd_name(Printer_entry *Printer, 
char *handlename)
        NT_PRINTER_INFO_LEVEL *printer = NULL;
        WERROR result;
 
-       DEBUG(4,("Setting printer name=%s (len=%lu)\n", handlename, (unsigned 
long)strlen(handlename)));
+       DEBUG(4,("Setting printer name=%s (len=%lu)\n", handlename,
+               (unsigned long)strlen(handlename)));
 
-       aprinter = handlename;
+       aprinter = CONST_DISCARD(char *, handlename);
        if ( *handlename == '\\' ) {
                servername = canon_servername(handlename);
                if ( (aprinter = strchr_m( servername, '\\' )) != NULL ) {
@@ -556,7 +557,7 @@ static bool set_printer_hnd_name(Printer_entry *Printer, 
char *handlename)
  ****************************************************************************/
 
 static bool open_printer_hnd(pipes_struct *p, struct policy_handle *hnd,
-                            char *name, uint32_t access_granted)
+                            const char *name, uint32_t access_granted)
 {
        Printer_entry *new_printer;
 
@@ -1247,7 +1248,7 @@ static void receive_notify2_message_list(struct 
messaging_context *msg,
  driver
  ********************************************************************/
 
-static bool srv_spoolss_drv_upgrade_printer(char* drivername)
+static bool srv_spoolss_drv_upgrade_printer(const char *drivername)
 {
        int len = strlen(drivername);
 
@@ -1545,20 +1546,19 @@ bool convert_devicemode(const char *printername,
 WERROR _spoolss_OpenPrinterEx(pipes_struct *p,
                              struct spoolss_OpenPrinterEx *r)
 {
-       char *name = CONST_DISCARD(char *, r->in.printername);
        int snum;
        Printer_entry *Printer=NULL;
 
-       if (!name) {
+       if (!r->in.printername) {
                return WERR_INVALID_PARAM;
        }
 
        /* some sanity check because you can open a printer or a print server */
        /* aka: \\server\printer or \\server */
 
-       DEBUGADD(3,("checking name: %s\n",name));
+       DEBUGADD(3,("checking name: %s\n", r->in.printername));
 
-       if (!open_printer_hnd(p, r->out.handle, name, 0)) {
+       if (!open_printer_hnd(p, r->out.handle, r->in.printername, 0)) {
                ZERO_STRUCTP(r->out.handle);
                return WERR_INVALID_PARAM;
        }
@@ -1566,7 +1566,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p,
        Printer = find_printer_index_by_hnd(p, r->out.handle);
        if ( !Printer ) {
                DEBUG(0,("_spoolss_OpenPrinterEx: logic error.  Can't find 
printer "
-                       "handle we created for printer %s\n", name ));
+                       "handle we created for printer %s\n", 
r->in.printername));
                close_printer_handle(p, r->out.handle);
                ZERO_STRUCTP(r->out.handle);
                return WERR_INVALID_PARAM;
@@ -2075,7 +2075,7 @@ WERROR _spoolss_DeletePrinter(pipes_struct *p,
  * long architecture string
  ******************************************************************/
 
-static int get_version_id (char * arch)
+static int get_version_id(const char *arch)
 {
        int i;
        struct table_node archi_table[]= {
@@ -2106,8 +2106,6 @@ static int get_version_id (char * arch)
 WERROR _spoolss_DeletePrinterDriver(pipes_struct *p,
                                    struct spoolss_DeletePrinterDriver *r)
 {
-       char *driver;
-       char *arch;
        NT_PRINTER_DRIVER_INFO_LEVEL    info;
        NT_PRINTER_DRIVER_INFO_LEVEL    info_win2k;
        int                             version;
@@ -2128,24 +2126,26 @@ WERROR _spoolss_DeletePrinterDriver(pipes_struct *p,
                return WERR_ACCESS_DENIED;
        }
 
-       driver = CONST_DISCARD(char *, r->in.driver);
-       arch   = CONST_DISCARD(char *, r->in.architecture);
-
        /* check that we have a valid driver name first */
 
-       if ((version=get_version_id(arch)) == -1)
+       if ((version = get_version_id(r->in.architecture)) == -1)
                return WERR_INVALID_ENVIRONMENT;
 
        ZERO_STRUCT(info);
        ZERO_STRUCT(info_win2k);
 
-       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, 
version)))
+       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, r->in.driver,
+                                               r->in.architecture,
+                                               version)))
        {
                /* try for Win2k driver if "Windows NT x86" */
 
                if ( version == 2 ) {
                        version = 3;
-                       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, 
driver, arch, version))) {
+                       if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3,
+                                                               r->in.driver,
+                                                               
r->in.architecture,
+                                                               version))) {
                                status = WERR_UNKNOWN_PRINTER_DRIVER;
                                goto done;
                        }
@@ -2165,7 +2165,9 @@ WERROR _spoolss_DeletePrinterDriver(pipes_struct *p,
 
        if ( version == 2 )
        {
-               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3, driver, 
arch, 3)))
+               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3,
+                                                      r->in.driver,
+                                                      r->in.architecture, 3)))
                {
                        /* if we get to here, we now have 2 driver info 
structures to remove */
                        /* remove the Win2k driver first*/
@@ -2203,8 +2205,6 @@ done:
 WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
                                      struct spoolss_DeletePrinterDriverEx *r)
 {
-       char *driver;
-       char *arch;
        NT_PRINTER_DRIVER_INFO_LEVEL    info;
        NT_PRINTER_DRIVER_INFO_LEVEL    info_win2k;
        int                             version;
@@ -2225,11 +2225,8 @@ WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
                return WERR_ACCESS_DENIED;
        }
 
-       driver = CONST_DISCARD(char *, r->in.driver);
-       arch   = CONST_DISCARD(char *, r->in.architecture);
-
        /* check that we have a valid driver name first */
-       if ((version=get_version_id(arch)) == -1) {
+       if ((version = get_version_id(r->in.architecture)) == -1) {
                /* this is what NT returns */
                return WERR_INVALID_ENVIRONMENT;
        }
@@ -2240,7 +2237,8 @@ WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
        ZERO_STRUCT(info);
        ZERO_STRUCT(info_win2k);
 
-       status = get_a_printer_driver(&info, 3, driver, arch, version);
+       status = get_a_printer_driver(&info, 3, r->in.driver,
+                                     r->in.architecture, version);
 
        if ( !W_ERROR_IS_OK(status) )
        {
@@ -2256,7 +2254,9 @@ WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
                /* try for Win2k driver if "Windows NT x86" */
 
                version = 3;
-               if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, driver, arch, 
version))) {
+               if (!W_ERROR_IS_OK(get_a_printer_driver(&info, 3, r->in.driver,
+                                                       r->in.architecture,
+                                                       version))) {
                        status = WERR_UNKNOWN_PRINTER_DRIVER;
                        goto done;
                }
@@ -2293,7 +2293,9 @@ WERROR _spoolss_DeletePrinterDriverEx(pipes_struct *p,
        /* also check for W32X86/3 if necessary; maybe we already have? */
 
        if ( (version == 2) && ((r->in.delete_flags & 
DPD_DELETE_SPECIFIC_VERSION) != DPD_DELETE_SPECIFIC_VERSION)  ) {
-               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3, driver, 
arch, 3)))
+               if (W_ERROR_IS_OK(get_a_printer_driver(&info_win2k, 3,
+                                                      r->in.driver,
+                                                      r->in.architecture, 3)))
                {
 
                        if ( delete_files && 
printer_driver_files_in_use(info_win2k.info_3) & (r->in.delete_flags & 
DPD_DELETE_ALL_FILES) ) {
@@ -4202,61 +4204,84 @@ static bool snum_is_shared_printer(int snum)
  Spoolss_enumprinters.
 ********************************************************************/
 
-static WERROR enum_all_printers_info_1(TALLOC_CTX *mem_ctx,
-                                      uint32_t flags,
-                                      union spoolss_PrinterInfo **info_p,
-                                      uint32_t *count)
+static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx,
+                                          uint32_t level,
+                                          uint32_t flags,
+                                          union spoolss_PrinterInfo **info_p,
+                                          uint32_t *count_p)
 {
        int snum;
        int n_services = lp_numservices();
        union spoolss_PrinterInfo *info = NULL;
+       uint32_t count = 0;
        WERROR result = WERR_OK;
 
-       DEBUG(4,("enum_all_printers_info_1\n"));
-
-       *count = 0;
+       *count_p = 0;
+       *info_p = NULL;
 
-       for (snum=0; snum<n_services; snum++) {
+       for (snum = 0; snum < n_services; snum++) {
 
                NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
-               struct spoolss_PrinterInfo1 info1;
 
                if (!snum_is_shared_printer(snum)) {
                        continue;
                }
 
-               DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", 
lp_servicename(snum), snum));
+               DEBUG(4,("Found a printer in smb.conf: %s[%x]\n",
+                       lp_servicename(snum), snum));
 
-               result = get_a_printer(NULL, &ntprinter, 2, 
lp_const_servicename(snum));
-               if (!W_ERROR_IS_OK(result)) {
-                       continue;
+               info = TALLOC_REALLOC_ARRAY(mem_ctx, info,
+                                           union spoolss_PrinterInfo,
+                                           count + 1);
+               if (!info) {
+                       result = WERR_NOMEM;
+                       goto out;
                }
 
-               result = construct_printer_info1(info, ntprinter, flags, 
&info1, snum);
-               free_a_printer(&ntprinter,2);
+               result = get_a_printer(NULL, &ntprinter, 2,
+                                      lp_const_servicename(snum));
                if (!W_ERROR_IS_OK(result)) {
-                       continue;
+                       goto out;
                }
 
-               info = TALLOC_REALLOC_ARRAY(mem_ctx, info,
-                                           union spoolss_PrinterInfo,
-                                           *count + 1);
-               if (!info) {
-                       DEBUG(2,("enum_all_printers_info_1: failed to enlarge 
printers buffer!\n"));
-                       result = WERR_NOMEM;
+               switch (level) {
+               case 1:
+                       result = construct_printer_info1(info, ntprinter, flags,
+                                                        &info[count].info1, 
snum);
+                       break;
+               case 2:
+                       result = construct_printer_info2(info, ntprinter,
+                                                        &info[count].info2, 
snum);
+                       break;
+               case 4:
+                       result = construct_printer_info4(info, ntprinter,
+                                                        &info[count].info4, 
snum);
+                       break;
+               case 5:
+                       result = construct_printer_info5(info, ntprinter,
+                                                        &info[count].info5, 
snum);
+                       break;
+
+               default:
+                       result = WERR_UNKNOWN_LEVEL;
+                       free_a_printer(&ntprinter, 2);
                        goto out;
                }
 
-               DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_1\n", *count));
+               free_a_printer(&ntprinter, 2);
+               if (!W_ERROR_IS_OK(result)) {
+                       goto out;
+               }
 
-               info[*count].info1 = info1;
-               (*count)++;
+               count++;
        }
 
+       *count_p = count;
+       *info_p = info;
+
  out:
        if (!W_ERROR_IS_OK(result)) {
                TALLOC_FREE(info);
-               *count = 0;
                return result;
        }
 
@@ -4266,6 +4291,19 @@ static WERROR enum_all_printers_info_1(TALLOC_CTX 
*mem_ctx,
 }
 
 /********************************************************************
+********************************************************************/
+
+static WERROR enum_all_printers_info_1(TALLOC_CTX *mem_ctx,
+                                      uint32_t flags,
+                                      union spoolss_PrinterInfo **info,
+                                      uint32_t *count)
+{
+       DEBUG(4,("enum_all_printers_info_1\n"));
+
+       return enum_all_printers_info_level(mem_ctx, 1, flags, info, count);
+}
+
+/********************************************************************
  enum_all_printers_info_1_local.
 *********************************************************************/
 
@@ -4341,64 +4379,12 @@ static WERROR 
enum_all_printers_info_1_network(TALLOC_CTX *mem_ctx,
  ********************************************************************/
 
 static WERROR enum_all_printers_info_2(TALLOC_CTX *mem_ctx,
-                                      union spoolss_PrinterInfo **info_p,
+                                      union spoolss_PrinterInfo **info,
                                       uint32_t *count)
 {
-       int snum;
-       int n_services = lp_numservices();
-       union spoolss_PrinterInfo *info = NULL;
-       WERROR result = WERR_OK;
-
-       *count = 0;
-
-       for (snum=0; snum<n_services; snum++) {
-
-               struct spoolss_PrinterInfo2 info2;
-               NT_PRINTER_INFO_LEVEL *ntprinter = NULL;
+       DEBUG(4,("enum_all_printers_info_2\n"));
 
-               if (!snum_is_shared_printer(snum)) {
-                       continue;
-               }
-
-               DEBUG(4,("Found a printer in smb.conf: %s[%x]\n", 
lp_servicename(snum), snum));
-
-               result = get_a_printer(NULL, &ntprinter, 2, 
lp_const_servicename(snum));
-               if (!W_ERROR_IS_OK(result)) {
-                       continue;
-               }
-
-               result = construct_printer_info2(info, ntprinter, &info2, snum);
-               free_a_printer(&ntprinter, 2);
-               if (!W_ERROR_IS_OK(result)) {
-                       continue;
-               }
-
-               info = TALLOC_REALLOC_ARRAY(mem_ctx, info,
-                                           union spoolss_PrinterInfo,
-                                           *count + 1);
-               if (!info) {
-                       DEBUG(2,("enum_all_printers_info_2: failed to enlarge 
printers buffer!\n"));
-                       result = WERR_NOMEM;
-                       goto out;
-               }
-
-               DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_2\n", *count + 
1));
-
-               info[*count].info2 = info2;
-
-               (*count)++;
-       }
-
- out:
-       if (!W_ERROR_IS_OK(result)) {
-               TALLOC_FREE(info);
-               *count = 0;
-               return result;
-       }
-
-       *info_p = info;
-
-       return WERR_OK;
+       return enum_all_printers_info_level(mem_ctx, 2, 0, info, count);
 }
 
 /********************************************************************
@@ -4458,6 +4444,22 @@ static WERROR enumprinters_level2(TALLOC_CTX *mem_ctx,
 }
 
 /********************************************************************
+ * handle enumeration of printers at level 4
+ ********************************************************************/
+
+static WERROR enumprinters_level4(TALLOC_CTX *mem_ctx,
+                                 uint32_t flags,
+                                 const char *servername,
+                                 union spoolss_PrinterInfo **info,
+                                 uint32_t *count)
+{
+       DEBUG(4,("enum_all_printers_info_4\n"));
+
+       return enum_all_printers_info_level(mem_ctx, 4, flags, info, count);
+}
+
+
+/********************************************************************
  * handle enumeration of printers at level 5
  ********************************************************************/
 
@@ -4467,8 +4469,9 @@ static WERROR enumprinters_level5(TALLOC_CTX *mem_ctx,
                                  union spoolss_PrinterInfo **info,
                                  uint32_t *count)
 {
-/*     return enum_all_printers_info_5(mem_ctx, info, offered, needed, 
count);*/
-       return WERR_OK;
+       DEBUG(4,("enum_all_printers_info_5\n"));
+
+       return enum_all_printers_info_level(mem_ctx, 5, flags, info, count);
 }
 
 /****************************************************************
@@ -4518,14 +4521,14 @@ WERROR _spoolss_EnumPrinters(pipes_struct *p,
                result = enumprinters_level2(p->mem_ctx, r->in.flags, name,
                                             r->out.info, r->out.count);
                break;


-- 
Samba Shared Repository

Reply via email to