cd_pvd(3) — Subroutines
NAME
cd_pvd, cd_cpvd − reads the Primary Volume Descriptor from a CD-ROM
SYNOPSIS
#include <sys/cdrom.h>
int cd_pvd(
char ∗path,
struct iso9660_pvd ∗pvd ); int cd_cpvd(
char ∗path,
char ∗addr );
LIBRARY
Rock Ridge and X/Open Extensions to the CDFS library (libcdrom.so, libcdrom.a)
PARAMETERS
∗path
Points to a pathname that names a file or directory within a CD-ROM File System hierarchy, or to a block-special file for a CD-ROM File System.
∗pvd
Points to the iso9660_pvd structure that holds the contents of the Primary Volume Descriptor from the CD-ROM. The iso9660_pvd structure is defined in cdfs/xcdr.h, an include file that is called into sys/cdrom.h
∗addr
Points to the address to which the Primary Volume Descriptor on the CD-ROM is copied.
DESCRIPTION
The function cd_pvd() fills the ∗pvd structure with the contents of the Primary Volume Descriptor from the CD-ROM. To execute this function successfully, the user must have read or execute permission for the file or directory pointed to by ∗path
The function cd_cpvd() copies the complete Primary Volume Descriptor that is recorded on the CD-ROM to the address pointed to by ∗addr. The user must allocate {CD_PVDLEN} bytes for the Primary Volume Descriptor. The variable {CD_PVDLEN} is defined in cdfs/xcdr.h, an include file that is called into sys/cdrom.h.
RETURN VALUES
If successful, the value zero is returned. 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, directory, or block special file pointed to by ∗path.
[EFAULT]
The address of ∗path or ∗pvd 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 named file is a block special file and the CD-ROM is not recorded according to the ISO 9660 standard.
[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.
[ENOENT]
A component of ∗path does not exist or the ∗path argument points to an empty string.
[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. The named file is a block-special file and the device associated with the file does not exist.
SEE ALSO
Files: cdfs/xcdr.h, sys/cdrom.h