This uses the same logic as lp_killunused().
metze
struct security_descriptor **ppsd,
bool *pallow_guest);
int load_usershare_service(const char *servicename);
-int load_usershare_shares(struct smbd_server_connection *sconn);
+int load_usershare_shares(struct smbd_server_connection *sconn,
+ bool (*snumused) (struct smbd_server_connection *, int));
void gfree_loadparm(void);
bool lp_load(const char *pszFname,
bool global_only,
been removed.
***************************************************************************/
-int load_usershare_shares(struct smbd_server_connection *sconn)
+int load_usershare_shares(struct smbd_server_connection *sconn,
+ bool (*snumused) (struct smbd_server_connection *, int))
{
SMB_STRUCT_DIR *dp;
SMB_STRUCT_STAT sbuf;
not currently in use. */
for (iService = iNumServices - 1; iService >= 0; iService--) {
if (VALID(iService) && (ServicePtrs[iService]->usershare == USERSHARE_PENDING_DELETE)) {
- if (conn_snum_used(sconn, iService)) {
+ if (snumused && snumused(sconn, iService)) {
continue;
}
/* Remove from the share ACL db. */
/* Ensure all the usershares are loaded. */
become_root();
- load_usershare_shares(msg_ctx_to_sconn(p->msg_ctx));
+ load_usershare_shares(msg_ctx_to_sconn(p->msg_ctx), conn_snum_used);
load_registry_shares();
num_services = lp_numservices();
unbecome_root();
/* Ensure all the usershares are loaded. */
become_root();
load_registry_shares();
- count = load_usershare_shares(sconn);
+ count = load_usershare_shares(sconn, conn_snum_used);
unbecome_root();
data_len = fixed_len = string_len = 0;
/* Ensure all the usershares are loaded. */
become_root();
load_registry_shares();
- sharecount = load_usershare_shares(sconn);
+ sharecount = load_usershare_shares(sconn, conn_snum_used);
unbecome_root();
for(i=0;i < sharecount;i++) {