From: Ed Kellett Date: Fri, 29 Jan 2021 12:54:37 +0000 (+0000) Subject: Use bsearch to check privset membership X-Git-Url: https://jfr.im/git/solanum.git/commitdiff_plain/02690ad5b2a04cf78733c07268eb4eff4e62e932 Use bsearch to check privset membership I don't really care if it's faster, I just prefer it --- diff --git a/ircd/privilege.c b/ircd/privilege.c index d7226f97..1bb64581 100644 --- a/ircd/privilege.c +++ b/ircd/privilege.c @@ -48,21 +48,6 @@ static rb_dlink_list privilegeset_list = {NULL, NULL, 0}; -bool -privilegeset_in_set(const struct PrivilegeSet *set, const char *priv) -{ - s_assert(set != NULL); - s_assert(priv != NULL); - - if (set->privs == NULL) - return false; - - for (const char **s = set->privs; *s != NULL; s++) - if (strcmp(*s, priv) == 0) return true; - - return false; -} - static struct PrivilegeSet * privilegeset_get_any(const char *name) { @@ -238,6 +223,16 @@ privilegeset_clear(struct PrivilegeSet *set) set->stored_size = 0; } +bool +privilegeset_in_set(const struct PrivilegeSet *set, const char *priv) +{ + s_assert(set != NULL); + s_assert(priv != NULL); + + const char **found = bsearch(&priv, set->privs, set->size, sizeof *set->privs, privilegeset_cmp_priv); + return found != NULL; +} + struct PrivilegeSet * privilegeset_set_new(const char *name, const char *privs, PrivilegeFlags flags) {