From 9b1759617ce7841a78d9f792254a9e4fa814858f Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 6 Oct 2006 19:32:52 +0000 Subject: r19156: Make enumprinters use the share iterators. Volker --- source/rpc_server/srv_spoolss_nt.c | 54 ++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 25 deletions(-) (limited to 'source') diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 32cd5766af7..b6af6b0b80a 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -4342,29 +4342,27 @@ static BOOL construct_printer_info_7(Printer_entry *print_hnd, static WERROR enum_all_printers_info_1(uint32 flags, RPC_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned) { - int snum; int i; - int n_services=lp_numservices(); + struct share_iterator *shares; + struct share_params *printer; PRINTER_INFO_1 *printers=NULL; WERROR result = WERR_OK; DEBUG(4,("enum_all_printers_info_1\n")); - for (snum=0; snumservice))); if (!construct_printer_info_1(NULL, flags, ¤t_prt, - ¶ms)) { + printer)) { continue; } @@ -4373,6 +4371,7 @@ static WERROR enum_all_printers_info_1(uint32 flags, RPC_BUFFER *buffer, uint32 DEBUG(2,("enum_all_printers_info_1: failed to enlarge " "printers buffer!\n")); *returned=0; + TALLOC_FREE(shares); return WERR_NOMEM; } DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_1\n", @@ -4381,6 +4380,7 @@ static WERROR enum_all_printers_info_1(uint32 flags, RPC_BUFFER *buffer, uint32 memcpy(&printers[*returned], ¤t_prt, sizeof(PRINTER_INFO_1)); (*returned)++; + TALLOC_FREE(printer); } /* check the required size. */ @@ -4405,6 +4405,7 @@ out: /* clear memory */ SAFE_FREE(printers); + TALLOC_FREE(shares); if ( !W_ERROR_IS_OK(result) ) *returned = 0; @@ -4542,27 +4543,27 @@ static WERROR enum_all_printers_info_1_network(fstring name, RPC_BUFFER *buffer, static WERROR enum_all_printers_info_2(RPC_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned) { - int snum; int i; - int n_services=lp_numservices(); + struct share_iterator *shares; + struct share_params *printer; PRINTER_INFO_2 *printers=NULL; WERROR result = WERR_OK; *returned = 0; - for (snum=0; snumservice))); if (!construct_printer_info_2(NULL, ¤t_prt, - ¶ms)) { + printer)) { continue; } if ( !(printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_2, @@ -4570,6 +4571,7 @@ static WERROR enum_all_printers_info_2(RPC_BUFFER *buffer, uint32 offered, uint3 DEBUG(2,("enum_all_printers_info_2: failed to enlarge " "printers buffer!\n")); *returned = 0; + TALLOC_FREE(shares); return WERR_NOMEM; } @@ -4579,6 +4581,7 @@ static WERROR enum_all_printers_info_2(RPC_BUFFER *buffer, uint32 offered, uint3 memcpy(&printers[*returned], ¤t_prt, sizeof(PRINTER_INFO_2)); (*returned)++; + TALLOC_FREE(printer); } /* check the required size. */ @@ -4606,6 +4609,7 @@ out: free_devmode(printers[i].devmode); SAFE_FREE(printers); + TALLOC_FREE(shares); if ( !W_ERROR_IS_OK(result) ) *returned = 0; -- cgit