#include <sys/capability.h> int cap_clear(cap_t cap_p); int cap_clear_flag(cap_t cap_p, cap_flag_t flag); int cap_get_flag(cap_t cap_p, cap_value_t cap, cap_flag_t flag, cap_flag_value_t *value_p); int cap_set_flag(cap_t cap_p, cap_flag_t flag, int ncap, const cap_value_t *caps, cap_flag_value_t value); int cap_compare(cap_t cap_a, cap_t cap_b); Link with -lcap.
These functions work with the following data types:
cap_clear() initializes the capability state in working storage identified by cap_p so that all capability flags are cleared.
cap_clear_flag() clears all of the capabilities of the specified capability flag, flag.
cap_get_flag() obtains the current value of the capability flag, flag, of the capability, cap, from the capability state identified by cap_p and places it in the location pointed to by value_p.
cap_set_flag() sets the flag, flag, of each capability in the array caps in the capability state identified by cap_p to value. The argument, ncap, is used to specify the number of capabilities in the array, caps.
cap_compare() compares two full capability sets and, in the spirit of memcmp(), returns zero if the two capability sets are identical. A positive return value, status, indicates there is a difference between them. The returned value carries further information about which of three sets, cap_flag_t flag, differ. Specifically, the macro CAP_DIFFERS (status, flag) evaluates to non-zero if the returned status differs in its flag components.
On failure, errno is set to EINVAL, indicating that one of the arguments is invalid.