PRIV_ADDSET(3C)         Standard C Library Functions         PRIV_ADDSET(3C)
NAME
       priv_addset, priv_allocset, priv_copyset, priv_delset, priv_emptyset,
       priv_basicset, priv_fillset, priv_freeset, priv_intersect,
       priv_inverse, priv_isemptyset, priv_isequalset, priv_isfullset,
       priv_ismember, priv_issubset, priv_union - privilege set manipulation
       functions
SYNOPSIS
       #include <priv.h>       
int priv_addset(
priv_set_t *sp, 
const char *priv);       
priv_set_t *priv_allocset(
void);       
void priv_copyset(
const priv_set_t *src, 
priv_set_t *dst);       
int priv_delset(
priv_set_t *sp, 
const char *priv);       
void priv_emptyset(
priv_set_t *sp);       
void priv_basicset(
priv_set_t *sp);       
void priv_fillset(
priv_set_t *sp);       
void priv_freeset(
priv_set_t *sp);       
void priv_intersect(
const priv_set_t *src, 
priv_set_t *dst);       
void priv_inverse(
priv_set_t *sp);       
boolean_t priv_isemptyset(
const priv_set_t *sp);       
boolean_t priv_isequalset(
const priv_set_t *src, 
const priv_set_t *dst);       
boolean_t priv_isfullset(
const priv_set_t *sp);       
boolean_t priv_ismember(
const priv_set_t *sp, 
const char *priv);       
boolean_t priv_issubset(
const priv_set_t *src, 
const priv_set_t *dst);       
void priv_union(
const priv_set_t *src, 
priv_set_t *dst);
DESCRIPTION
       The 
sp, 
src, and 
dst arguments point to privilege sets. The 
priv       argument points to a named privilege.
       The 
priv_addset() function adds the named privilege 
priv to 
sp.
       The 
priv_allocset() function allocates sufficient memory to contain a
       privilege set. The value of the returned privilege set is
       indeterminate. The function returns 
NULL and sets 
errno when it fails
       to allocate memory.
       The 
priv_copyset() function copies the set 
src to 
dst.
       The 
priv_delset() function removes the named privilege 
priv from 
sp.
       The 
priv_emptyset() function clears all privileges from 
sp.
       The 
priv_basicset() function copies the basic privilege set to 
sp.
       The 
priv_fillset() function asserts all privileges in 
sp, including
       the privileges not currently defined in the system.
       The 
priv_freeset() function frees the storage allocated by       
priv_allocset().
       The 
priv_intersect() function intersects 
src with 
dst and places the
       results in 
dst.
       The 
priv_inverse() function inverts the privilege set given as
       argument in place.
       The 
priv_isemptyset() function checks whether the argument is an
       empty set.
       The 
priv_isequalset() function checks whether the privilege set 
src       is equal to 
dst.
       The 
priv_isfullset() function checks whether the argument is a full
       set.  A full set is a set with all bits set, regardless of whether
       the privilege is currently defined in the system.
       The 
priv_ismember() function checks whether the named privilege 
priv       is a member of 
sp.
       The 
priv_issubset() function checks whether 
src is a subset of 
dst.
       The 
priv_union() function takes the union of 
src and 
dst and places
       the result in 
dst.
RETURN VALUES
       Upon successful completion, 
priv_allocset() returns a pointer to an
       opaque data structure. It returns 
NULL if memory allocation fails and
       sets 
errno to indicate the error.
       Upon successful completion, 
priv_isemptyset(), 
priv_isfullset(),       
priv_isequalset(), 
priv_issubset(), and 
priv_ismember() return       
B_TRUE. Otherwise, they return 
B_FALSE.
       Upon successful completion, 
priv_delset() and 
priv_addset() return 0.
       Otherwise, they return -1 and set 
errno to indicate the error.
ERRORS
       The 
priv_allocset() function will fail if:       
ENOMEM                 The physical limits of the system are exceeded by the
                 memory allocation needed to hold a privilege set.       
EAGAIN                 There is insufficient memory for allocation to hold a
                 privilege set. The application can try again later.
       The 
priv_delset() and 
priv_addset() functions will fail if:       
EINVAL                 The privilege argument is not a valid privilege name.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Evolving        |
       +--------------------+-----------------+
       |MT-Level            | MT-Safe         |
       +--------------------+-----------------+
SEE ALSO
       setppriv(2), 
malloc(3C), 
priv_str_to_set(3C), 
attributes(7),       
privileges(7)NOTES
       The functions that compare sets operate on all bits of the set,
       regardless of whether the specific privileges are currently defined
       in the system.
                              September 8, 2015              PRIV_ADDSET(3C)