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).