.TH CAP_COPY_EXT 3 "2008-05-11" "" "Linux Programmer's Manual"
.SH NAME
cap_copy_ext, cap_size, cap_copy_int \- capability state
external representation translation
.SH SYNOPSIS
.B #include <sys/capability.h>
.sp
.BI "ssize_t cap_size(cap_t " cap_p );
.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
Link with \fI\-lcap\fP.
.SH DESCRIPTION
These functions translate between internal and external
representations of a capability state.  The external representation is
an exportable, contiguous, persistent representation of a capability
state in user-managed space.  The internal representation is managed
by the capability functions in working storage.
.PP
.BR cap_size ()
returns the total length (in bytes) that the capability state in working
storage identified by
.I cap_p
would require when converted by
.BR cap_copy_ext ().
This function is used primarily to determine the amount of buffer space that
must be provided to the
.BR cap_copy_ext ()
function in order to hold the capability data record created from
.IR cap_p .
.PP
.BR cap_copy_ext ()
copies a capability state in working storage, identified by
.IR cap_p ,
from system-managed space to user-managed space (pointed to by
.IR ext_p )
and returns the length of the resulting data record.  The size parameter
represents the maximum size, in bytes, of the resulting data record.  The
.BR cap_copy_ext ()
function will do any conversions necessary to convert the capability
state from the undefined internal format to an exportable, contiguous,
persistent data record.  It is the responsibility of the user to
allocate a buffer large enough to hold the copied data.  The buffer
length required to hold the copied data may be obtained by a call to
the
.BR cap_size ()
function.
.PP
.BR cap_copy_int ()
copies a capability state from a capability data record in user-managed
space to a new capability state in working storage, allocating any
memory necessary, and returning a pointer to the newly created capability
state.  The function initializes the capability state and then copies
the capability state from the record pointed to by
.I ext_p
into the capability state, converting, if necessary, the data from a
contiguous, persistent format to an undefined, internal format.  Once
copied into internal format, the object can be manipulated by the capability
state manipulation functions (see
.BR cap_clear (3)).
Note that the record pointed to by
.I ext_p
must have been obtained from a previous, successful call to
.BR cap_copy_ext ()
for this function to work successfully.  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.
.SH "RETURN VALUE"
.BR cap_size ()
returns the length required to hold a capability data record on success,
and \-1 on failure.
.PP
.BR cap_copy_ext ()
returns the number of bytes placed in the user managed space pointed to by
.I ext_p 
on success, and \-1 on failure.
.PP
.BR cap_copy_int ()
returns a pointer to the newly created capability state in working storage
on success, and NULL on failure.
.PP
On failure,
.BR errno
is set to
.BR EINVAL ,
.BR ENOMEM ,
or
.BR ERANGE .
.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_from_text (3),
.BR cap_get_file (3),
.BR cap_get_proc (3),
.BR cap_init (3),
.BR capabilities (7)
