Provided by: atfs-dev_1.4pl6-15_amd64 bug

NAME

       atOpenExpand, atReadExpand, atCloseExpand - read version objects with attribute citations expanded
       atGetWriteName - get bound version name of a version object opened with atOpenExpand

SYNOPSIS

       #include <atfs.h>
       #include <atfstk.h>

       int   atOpenExpand(char *version, int expand_busy) ;

       int   atReadExpand(int desc, char *bufp, int nbytes) ;

       void  atCloseExpand(int desc) ;

       char *atGetWriteName(int desc) ;

       extern int  atBindError ;
       extern char atBindErrorMsg[] ;

DESCRIPTION

       atOpenExpand,  atReadExpand,  and  atCloseExpand are designed as a nearly plug-compatible replacement for
       the system calls open(2), read(2), and close(2) for  reading  of  AtFS  version  objects  with  attribute
       citations expanded.

       atOpenExpand opens the file or AtFS version object version for reading with atReadExpand.  Version points
       to the pathname of a file or AtFS version  object.   If  the  flag  expand_busy  is  non-zero,  attribute
       citations  are  expanded  in  busy  versions  also.   atOpenExpand  returns a descriptor that is valid as
       argument to successive calls to atReadExpand and atCloseExpand.

       atReadExpand attempts to read nbytes of data from the object referenced by the descriptor desc  into  the
       buffer  pointed  to  by bufp.  If desc is zero, atReadExpand reads from the standard input.  atReadExpand
       returns the number of bytes actually read.

       atCloseExpand frees the resources associated with the descriptor desc.

       atGetWriteName returns a pointer to the bound version name of the version object for  which  atOpenExpand
       returned the descriptor desc.

DIAGNOSTICS

       On error atOpenExpand and atReadExpand return -1 and set errno appropriately.  If one of these returns an
       error and errno is set to ENOMEM, the application may retry the operation, possibly  after  freeing  some
       memory.

       If  atOpenExpand returns an error and atBindError has a non-zero value, the string version did not select
       a version object or not a unique version object.  In this case  atBindErrorMsg  contains  an  appropriate
       error message.

       Possible Values of errno after a call to atOpenExpand:

       ENOMEM Not enough memory could be allocated.

       EMFILE All available descriptors are in use.

       All errno values returned by open(2) or read(2).

       Possible Values of errno after a call to atReadExpand:

       ENOMEM Not enough memory could be allocated.

       EBADF  Invalid descriptor.

BUGS

       Since  atOpenExpand  reads  the  complete contents of version into memory, it fails on very large version
       objects.

SEE ALSO

       intro(2), open(2), read(2), close(2), errno(3), atattribute(3), atbind(3).