Linux-CDROM
view release on metacpan or search on metacpan
void
reset_datasize (...)
CODE:
{
RESET_DATSIZE;
}
int
get_datasize (...)
CODE:
{
RETVAL = SvIVX(DATSIZE);
}
OUTPUT:
RETVAL
CDROM*
new (CLASS, device)
char *CLASS;
char *device;
PREINIT:
CDROM *cdrom;
int fd;
int caps;
CODE:
{
reg_error(DEVICE_CDROM_NO_ERROR);
if ((fd = open(device, O_RDONLY|O_NONBLOCK)) == -1) {
reg_error(DEVICE_CDROM_NO_OPEN);
XSRETURN_UNDEF;
}
if ((caps = ioctl(fd, CDROM_GET_CAPABILITY)) == -1) {
reg_error(DEVICE_CDROM_NO_CDROM);
close(fd);
XSRETURN_UNDEF;
}
New(0, cdrom, 1, CDROM);
cdrom->fd = fd;
cdrom->device = savepv(device);
cdrom->caps = caps;
cdrom->toch = NULL;
cdrom->num_frames = -1;
RETVAL = cdrom;
}
OUTPUT:
RETVAL
void
fh (self)
CDROM *self;
PREINIT:
char mode[8];
GV *gv;
STRLEN modlen;
CODE:
{
modlen = sprintf(mode, "<&%i", self->fd);
gv = newGVgen("main");
sv_dump((SV*)gv);
do_openn(gv, mode, modlen, FALSE, O_RDONLY|O_NONBLOCK, 0, Nullfp, (SV**)NULL, 0);
sv_setsv(ST(0), sv_2mortal(newRV_noinc((SV*)gv)));
XSRETURN(1);
}
void
close (self)
CDROM *self;
CODE:
{
if (close(self->fd) == -1)
XSRETURN_UNDEF;
self->fd = -1;
XSRETURN_YES;
}
void
reopen (self)
CDROM *self;
CODE:
{
reg_error(DEVICE_CDROM_NO_ERROR);
if (reopen(self))
XSRETURN_YES;
reg_error(DEVICE_CDROM_NO_OPEN);
XSRETURN_UNDEF;
}
int
capabilities (self)
CDROM *self;
CODE:
{
if (self->caps == -2) {
self->caps = ioctl(self->fd, CDROM_GET_CAPABILITY);
if (self->caps == -1)
XSRETURN_UNDEF;
}
RETVAL = self->caps;
}
OUTPUT:
RETVAL
int
drive_status (self)
CDROM *self;
PREINIT:
int status;
CODE:
{
if ((status = ioctl(self->fd, CDROM_DRIVE_STATUS)) == -1)
XSRETURN_UNDEF;
RETVAL = status;
}
OUTPUT:
RETVAL
UV
disc_status (self)
CDROM *self;
PREINIT:
( run in 1.795 second using v1.01-cache-2.11-cpan-39bf76dae61 )