From c938a1065fed2a001da69b6a6d826ef31be75003 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 2 Sep 2013 11:37:57 +0000 Subject: [PATCH] smbd: Factor out remove_stale_share_mode_entries Will be used in the next commit Signed-off-by: Volker Lendecke Reviewed-by: Michael Adam --- source3/locking/locking.c | 16 ++++++++++++++++ source3/locking/proto.h | 1 + source3/locking/share_mode_lock.c | 15 +-------------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 7ac04a45e3..b5d4f24f34 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -693,6 +693,22 @@ bool share_mode_stale_pid(struct share_mode_data *d, uint32_t idx) return true; } +void remove_stale_share_mode_entries(struct share_mode_data *d) +{ + uint32_t i; + + i = 0; + while (i < d->num_share_modes) { + if (d->share_modes[i].stale) { + struct share_mode_entry *m = d->share_modes; + m[i] = m[d->num_share_modes-1]; + d->num_share_modes -= 1; + } else { + i += 1; + } + } +} + bool set_share_mode(struct share_mode_lock *lck, files_struct *fsp, uid_t uid, uint64_t mid, uint16 op_type) { diff --git a/source3/locking/proto.h b/source3/locking/proto.h index f6ae462bac..2c9654ce28 100644 --- a/source3/locking/proto.h +++ b/source3/locking/proto.h @@ -176,6 +176,7 @@ bool is_valid_share_mode_entry(const struct share_mode_entry *e); bool share_mode_stale_pid(struct share_mode_data *d, uint32_t idx); bool set_share_mode(struct share_mode_lock *lck, files_struct *fsp, uid_t uid, uint64_t mid, uint16 op_type); +void remove_stale_share_mode_entries(struct share_mode_data *d); bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp); bool mark_share_mode_disconnected(struct share_mode_lock *lck, struct files_struct *fsp); diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c index 342f9108d6..5d7a08ca4b 100644 --- a/source3/locking/share_mode_lock.c +++ b/source3/locking/share_mode_lock.c @@ -171,26 +171,13 @@ static TDB_DATA unparse_share_modes(struct share_mode_data *d) { DATA_BLOB blob; enum ndr_err_code ndr_err; - uint32_t i; if (DEBUGLEVEL >= 10) { DEBUG(10, ("unparse_share_modes:\n")); NDR_PRINT_DEBUG(share_mode_data, d); } - i = 0; - while (i < d->num_share_modes) { - if (d->share_modes[i].stale) { - /* - * Remove the stale entries before storing - */ - struct share_mode_entry *m = d->share_modes; - m[i] = m[d->num_share_modes-1]; - d->num_share_modes -= 1; - } else { - i += 1; - } - } + remove_stale_share_mode_entries(d); if (d->num_share_modes == 0) { DEBUG(10, ("No used share mode found\n")); -- 2.34.1