| .\" | |
| .\" written by Andrew Main <zefram@dcs.warwick.ac.uk> | |
| .\" | |
| .TH CAP_INIT 3 "2008-05-11" "" "Linux Programmer's Manual" | |
| .SH NAME | |
| cap_init, cap_free, cap_dup \- capability data object storage management | |
| .SH SYNOPSIS | |
| .B #include <sys/capability.h> | |
| .sp | |
| .B cap_t cap_init(void); | |
| .sp | |
| .BI "int cap_free(void *" obj_d ); | |
| .sp | |
| .BI "cap_t cap_dup(cap_t " cap_p ); | |
| .sp | |
| Link with \fI-lcap\fP. | |
| .SH DESCRIPTION | |
| The capabilities associated with a file or process are never edited | |
| directly. Instead, working storage is allocated to contain a | |
| representation of the capability state. Capabilities are edited and | |
| manipulated only within this working storage area. Once editing of | |
| the capability state is complete, the updated capability state is used | |
| to replace the capability state associated with the file or process. | |
| .PP | |
| .BR cap_init () | |
| creates a capability state in working storage and returns a pointer to | |
| the capability state. The initial value of all flags are cleared. The | |
| caller should free any releasable memory, when the capability state in | |
| working storage is no longer required, by calling | |
| .BR cap_free () | |
| with the | |
| .I cap_t | |
| as an argument. | |
| .PP | |
| .BR cap_free () | |
| liberates any releasable memory that has been allocated to the | |
| capability state identified by | |
| .IR obj_d . | |
| The | |
| .I obj_d | |
| argument may identify either a | |
| .I cap_t | |
| entity, or a | |
| .I char * | |
| entity allocated by the | |
| .BR cap_to_text () | |
| function. | |
| .PP | |
| .BR cap_dup () | |
| returns a duplicate capability state in working storage given by the | |
| source object | |
| .IR cap_p , | |
| allocating any memory necessary, and returning a | |
| pointer to the newly created capability state. Once duplicated, no | |
| operation on either capability state affects the other in any way. | |
| When the duplicated capability state in working storage is no longer required, | |
| the caller should free any releasable memory by calling | |
| .BR cap_free () | |
| with the | |
| .I cap_t | |
| as an argument. | |
| .SH "RETURN VALUE" | |
| .BR cap_init () | |
| and | |
| .BR cap_dup () | |
| return a non-NULL value on success, and NULL on failure. | |
| .PP | |
| .BR cap_free () | |
| returns zero on success, and \-1 on failure. | |
| .PP | |
| On failure, | |
| .I errno | |
| is set to | |
| .BR EINVAL | |
| or | |
| .BR ENOMEM . | |
| .SH "CONFORMING TO" | |
| These functions are specified in the withdrawn POSIX.1e draft specification. | |
| .SH "SEE ALSO" | |
| .BR libcap (3), | |
| .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 capabilities (7) |