cd_xar(3) — Subroutines
NAME
cd_xar, cd_cxar − reads the Extended Attribute Record for a CD-ROM file or directory from the CD-ROM
SYNOPSIS
#include <sys/cdrom.h>
int cd_xar(
char ∗path,
int fsec,
struct iso9660_xar ∗xar,
int applen,
int esclen ); int cd_cxar(
char ∗path,
int fsec,
char ∗addr,
int xarlen );
LIBRARY
Rock Ridge and X/Open Extensions to the CDFS library (libcdrom.so, libcdrom.a)
PARAMETERS
∗path
Points to the file or directory within the CD-ROM File System hierarchy.
fsecSpecifies the File Section of the file or directory pointed to by ∗path, with the numbering beginning at one. If fsec is set to -1, the last File Section of the named file or the only File Section of the named directory is assumed.
∗xarPoints to the iso9660_xar structure that holds the Extended Attribute Record (XAR) information. The iso9660_xar structure is defined in cdfs/xcdr.h, an include file that is called into sys/cdrom.h
applen
Used in conjunction with esclen, determines how many bytes will be copied to the address specified by the ∗xar structure member app_use.
esclen
Used in conjunction with applen, determines how many bytes will be copied to the address specified by the ∗xar structure member esc_seq.
∗addr
Specifies the address where the function cd_cxar copies the XAR that is recorded on the CD-ROM.
xarlen
Determines if part or all of the XAR will be read.
DESCRIPTION
The cd_xar() routine fills the ∗xar structure with the contents of the Extended Attribute Record (XAR) that is associated with the file or directory pointed to by ∗path.
The total number of logical blocks of an XAR can be obtained by calling the cd_drec() function. The Logical Block Size in bytes can be obtained by calling the cd_pvd() function. The length of the fixed part of the XAR is given by {CD_XARFIXL}. The variable {CD_XARFIXL} is defined in cdfs/xcdr.h, an include file that is called into sys/cdrom.h.
The cd_cxar() function copies the XAR as recorded on the CD-ROM to the address pointed to by ∗addr.
RETURN VALUES
If successful, the routines return the following values:
The cd_xar() function returns the number of bytes copied for the variable part of the XAR.
The cd_cxar() function returns the number of bytes copied. If unsuccessful, the integer -1 is returned and errno is set to indicate the error.
ERRORS
The function will fail if:
[EACCES]
Search permission is denied for a directory in ∗path or read permission is denied for the file or directory pointed to by ∗path.
[EFAULT]
The address of ∗path or ∗addr is invalid.
[EINTR]
A signal was caught during execution of the function.
[EINVAL]
The argument ∗path points to a file or directory that is not within the CD-ROM file hierarchy. The value of fsec or xarlen is invalid.
[EMFILE]
{OPEN_MAX} file descriptors are currently open in the calling process.
[Tru64 UNIX] Either the OPEN_MAX value or the per-process soft descriptor limit is checked.
[ENAMETOOLONG]
The length of the ∗path string exceeds {PATH_MAX}, or a pathname component is longer than {NAME_MAX} while {_POSIX_NO_TRUNC} is in effect.
[ENFILE]
The system file table is full.
[ENODEV]
The Volume containing the File Section indicated by fsec is not mounted.
[ENOENT]
A component of ∗path does not exist or the ∗path argument points to an empty string. The File Section indicated by fsec has no XAR.
[ENOTDIR]
A component of the ∗path prefix is not a directory.
[ENXIO]
The CD-ROM is not in the drive or a read error occurred.
SEE ALSO
Functions: cd_drec(3)
Files: cdfs/xcdr.h, sys/cdrom.h