.Dd February 3, 2011 .Dt ACL_COPY_EXT 3 .Sh NAME .Nm acl_copy_ext , .Nm acl_copy_ext_native , .Nm acl_copy_int , .Nm acl_copy_int_native, .Nm acl_size .Nd convert an ACL to and from an external representation .Sh SYNOPSIS .In sys/types.h .In sys/acl.h .Ft ssize_t .Fo acl_copy_ext .Fa "void *buf" .Fa "acl_t acl" .Fa "ssize_t size" .Fc .Ft ssize_t .Fo acl_copy_ext_native .Fa "void *buf" .Fa "acl_t acl" .Fa "ssize_t size" .Fc .Ft acl_t .Fo acl_copy_int .Fa "const void *buf" .Fc .Ft acl_t .Fo acl_copy_int_native .Fa "const void *buf" .Fc .Ft ssize_t .Fo acl_size .Fa "acl_t acl" .Fc .Sh DESCRIPTION The .Fn acl_copy_ext and .Fn acl_copy_ext_native functions convert the ACL given by the argument .Fa acl into a binary external representation that can be saved to a file, passed to another program, etc. This external representation is written to the buffer pointed to by the argument .Fa buf , which is assumed to have at least the number of contiguous bytes passed in the .Fa size argument. The number of bytes actually written is returned. .Pp The .Fn acl_copy_ext function writes data in big-endian byte-order, and so is portable across machines with different byte-order. To the contrary, the .Fn acl_copy_ext_native function uses the machine's native byte-order, and so is only portable to machines of like byte-order. .Pp The .Fn acl_copy_int and .Fn acl_copy_int_native functions do the reverse conversion; the ACL represented by the external representation passed in the argument .Fa buf , is returned. The .Fn acl_copy_int function expects an external representation in big-endian byte-order (as returned by .Fn acl_copy_ext ) , while .Fn acl_copy_int_native expects an external representation in native byte-order (as returned by .Fn acl_copy_ext_native ) . .Pp The .Fn acl_size function returns the corresponding external representation size, in bytes, for the given ACL passed in the argument .Fa acl . This size can be used to allocate sufficient memory for the buffer in subsequent calls to .Fn acl_copy_ext and .Fn acl_copy_ext_native . .Sh RETURN VALUES Upon successful completion, the .Fn acl_copy_ext and .Fn acl_copy_ext_native functions shall return the number of bytes actually written to the buffer. Otherwise, a value of .Va -1 shall be returned and .Va errno shall be set to indicate the error. .Pp Upon successful completion, the .Fn acl_copy_int and .Fn acl_copy_int_native functions shall return the ACL represented by the external representation passed in the buffer. Otherwise, a value of .Va (acl_t)NULL shall be returned and .Va errno shall be set to indicate the error. .Pp Upon successful completion, the .Fn acl_size function shall return the size of the external representation. Otherwise, a value of .Va -1 shall be returned and .Va errno shall be set to indicate the error. .Sh ERRORS The .Fn acl_copy_ext and .Fn acl_copy_ext_native functions fail if: .Bl -tag -width Er .It Bq Er EINVAL Argument .Fa acl does not point to a valid ACL. .It Bq Er ERANGE The given buffer is too small to contain the converted external representation. .El .Pp The .Fn acl_copy_int and .Fn acl_copy_int_native functions fail if: .Bl -tag -width Er .It Bq Er EINVAL The buffer does not contain a valid external representation. .El .Pp The .Fn acl_size function fails if: .Bl -tag -width Er .It Bq Er EINVAL Argument .Fa acl does not point to a valid ACL. .El .Sh NOTE While the external representation may use pre-existing data structures, no assumptions on the internal structure should be made. .Pp The .Xr acl_to_text 3 and .Xr acl_from_text 3 functions also convert to and from a different external representation, a human-readable string. Neither of these representations are cross-platform, lacking a cross-platform standard. .Sh SEE ALSO .Xr acl 3 , .Xr acl_from_text 3 , .Xr acl_to_text 3 .Sh AUTHORS .An Michael Smith .An Robert N M Watson