.TH LIBCAP 3 "2008-07-29" "" "Linux Programmer's Manual"
.SH NAME
cap_clear, cap_clear_flag, cap_compare, cap_copy_ext, cap_copy_int, \
cap_free, cap_from_name, cap_from_text, cap_get_fd, cap_get_file, \
cap_get_flag, cap_get_pid, cap_get_proc, cap_set_fd, cap_set_file, \
cap_set_flag, cap_set_proc, cap_size, cap_to_name, cap_to_text, \
cap_get_pid, cap_dup \- capability data object manipulation
.SH SYNOPSIS
.nf
.B #include <sys/capability.h>
.sp
.BI "int cap_clear(cap_t " cap_p );
.sp
.BI "int cap_clear_flag(cap_t " cap_p ", cap_flag_t " flag ");"
.sp
.BI "int cap_compare(cap_t " cap_a ", cap_t " cap_b ");"
.sp
.BI "ssize_t cap_copy_ext(void *" ext_p ", cap_t " cap_p ", ssize_t " size );
.sp
.BI "cap_t cap_copy_int(const void *" ext_p );
.sp
.BI "int cap_free(void *" obj_d );
.sp
.BI "int cap_from_name(const char *" name ", cap_value_t *" cap_p );
.sp
.BI "cap_t cap_from_text(const char *" buf_p );
.sp
.BI "cap_t cap_get_fd(int " fd );
.sp
.BI "cap_t cap_get_file(const char *" path_p );
.sp
.BI "int cap_get_flag(cap_t " cap_p ", cap_value_t " cap ,
.BI "                 cap_flag_t " flag ", cap_flag_value_t *" value_p ");"
.sp
.B #include <sys/types.h>
.BI "cap_t cap_get_pid(pid_t " pid );
.sp
.B "cap_t cap_get_proc(void);"
.sp
.BI "int cap_set_fd(int " fd ", cap_t " caps );
.sp
.BI "int cap_set_file(const char *" path_p ", cap_t " cap_p );
.sp
.sp
.BI "int cap_set_flag(cap_t " cap_p ", cap_flag_t " flag ", int " ncap ,
.BI "                 const cap_value_t *" caps ", cap_flag_value_t " value ");"
.BI "int cap_set_proc(cap_t " cap_p );
.sp
.BI "ssize_t cap_size(cap_t " cap_p );
.sp
.BI "char *cap_to_name(cap_value_t " cap );
.sp
.BI "char *cap_to_text(cap_t " caps ", ssize_t *" length_p );
.sp
.BI "cap_t cap_get_pid(pid_t " pid );
.sp
.BI "cap_t cap_dup(cap_t " cap_p );
.sp
Link with \fI-lcap\fP.
.fi
.SH DESCRIPTION
These functions work on a capability state held in working storage.
A
.I cap_t
holds information about the capabilities in each of the three sets,
Permitted, Inheritable, and Effective.
Each capability in a set may be clear (disabled, 0) or set (enabled, 1).
.PP
These functions work with the following data types:
.TP 18
.I cap_value_t
identifies a capability, such as
.BR CAP_CHOWN .
.TP
.I cap_flag_t
identifies one of the three flags associated with a capability
(i.e., it identifies one of the three capability sets).
Valid values for this type are
.BR CAP_EFFECTIVE ,
.B CAP_INHERITABLE
or
.BR CAP_PERMITTED .
.TP
.I cap_flag_value_t
identifies the setting of a particular capability flag
(i.e, the value of a capability in a set).
Valid values for this type are
.BR CAP_CLEAR (0)
or
.BR CAP_SET (1).
.SH "RETURN VALUE"
The return value is generally specific to the individual function called.
On failure,
.I errno
is set appropriately.
.SH "CONFORMING TO"
These functions are as per the withdrawn POSIX.1e draft specification.
The following functions are Linux extensions:
.BR cap_clear_flag (),
.BR cap_compare (),
.BR cap_from_name (),
.BR cap_to_name (),
and
.BR cap_compare ().
.SH "SEE ALSO"
.BR cap_clear (3),
.BR cap_copy_ext (3),
.BR cap_from_text (3),
.BR cap_get_file (3),
.BR cap_get_proc (3),
.BR cap_init (3),
.BR capabilities (7),
.BR getpid (2)
