Use bsearch to check privset membership
I don't really care if it's faster, I just prefer it
This commit is contained in:
parent
ae54b3a735
commit
02690ad5b2
1 changed files with 10 additions and 15 deletions
|
@ -48,21 +48,6 @@
|
||||||
|
|
||||||
static rb_dlink_list privilegeset_list = {NULL, NULL, 0};
|
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 *
|
static struct PrivilegeSet *
|
||||||
privilegeset_get_any(const char *name)
|
privilegeset_get_any(const char *name)
|
||||||
{
|
{
|
||||||
|
@ -238,6 +223,16 @@ privilegeset_clear(struct PrivilegeSet *set)
|
||||||
set->stored_size = 0;
|
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 *
|
struct PrivilegeSet *
|
||||||
privilegeset_set_new(const char *name, const char *privs, PrivilegeFlags flags)
|
privilegeset_set_new(const char *name, const char *privs, PrivilegeFlags flags)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue