Expand getting drive capabilities. We now have 3 masks where we had

only one before.
This commit is contained in:
rocky
2004-07-17 22:16:46 +00:00
parent c4cd69693c
commit e84c6316b0
33 changed files with 679 additions and 528 deletions

View File

@@ -1,5 +1,5 @@
/*
$Id: sample2.c,v 1.9 2004/07/13 12:28:18 rocky Exp $
$Id: sample2.c,v 1.10 2004/07/17 22:16:46 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -33,6 +33,69 @@
#include <sys/types.h>
#endif
#include <cdio/cdio.h>
#define _(x) x
/* Prints out drive capabilities */
static void
print_drive_capabilities(cdio_drive_read_cap_t i_read_cap,
cdio_drive_write_cap_t i_write_cap,
cdio_drive_misc_cap_t i_misc_cap)
{
if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
printf("Error in getting drive hardware properties\n");
} else {
printf(_("Hardware : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_FILE
? "Disk Image" : "CD-ROM or DVD");
printf(_("Can open tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_OPEN_TRAY ? "Yes" : "No");
printf(_("Can close tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_CLOSE_TRAY ? "Yes" : "No");
printf(_("Can disable manual eject : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_LOCK ? "Yes" : "No");
printf(_("Can select juke-box disc : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_DISC ? "Yes" : "No");
printf(_("Can set drive speed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_SPEED ? "Yes" : "No");
printf(_("Can detect if CD changed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED ? "Yes" : "No");
printf(_("Can read multiple sessions : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MULTI_SESSION ? "Yes" : "No");
printf(_("Can hard reset device : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_RESET ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_read_cap) {
printf("Error in getting drive reading properties\n");
} else {
printf("Reading....\n");
printf(_(" Can play audio : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-R : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_R ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can read DVD-ROM : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_DVD_ROM ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_write_cap) {
printf("Error in getting drive writing properties\n");
} else {
printf("\nWriting....\n");
printf(_(" Can write CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM ? "Yes" : "No");
}
}
int
main(int argc, const char *argv[])
{
@@ -41,36 +104,22 @@ main(int argc, const char *argv[])
if (NULL != cdio) {
char *default_device = cdio_get_default_device(cdio);
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
printf("The driver selected is %s\n", cdio_get_driver_name(cdio));
if (default_device) {
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap(cdio);
if (default_device)
printf("The default device for this driver is %s\n", default_device);
printf("drive capability in hex: %x\n", (unsigned int) i_drive_cap);
if (CDIO_DRIVE_CAP_ERROR == i_drive_cap) {
printf("Error in getting drive properties\n");
} else if (CDIO_DRIVE_CAP_UNKNOWN == i_drive_cap) {
printf("Can't determine drive properties\n");
} else if (CDIO_DRIVE_CAP_FILE == i_drive_cap) {
printf("Disc-image file\n");
} else {
if (i_drive_cap & CDIO_DRIVE_CAP_CD_R)
printf("Drive can read CD-ROM\n");
if (i_drive_cap & CDIO_DRIVE_CAP_CD_RW)
printf("Drive can write CD-ROM\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD)
printf("Drive can read DVD\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD_R)
printf("Drive can write DVD-R\n");
if (i_drive_cap & CDIO_DRIVE_CAP_DVD_RAM)
printf("Drive can write DVD-RAM\n");
}
}
cdio_get_drive_cap(cdio, &i_read_cap, &i_write_cap, &i_misc_cap);
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
free(default_device);
cdio_destroy(cdio);
printf("\n");
} else {
printf("Problem in trying to find a driver.\n\n");
}

View File

@@ -1,5 +1,5 @@
/* -*- c -*-
$Id: cdio.h,v 1.57 2004/07/17 02:18:27 rocky Exp $
$Id: cdio.h,v 1.58 2004/07/17 22:16:46 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -224,8 +224,11 @@ extern "C" {
there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM.
*/
cdio_drive_cap_t cdio_get_drive_cap (const CdIo *obj);
void cdio_get_drive_cap (const CdIo *obj,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*!
Get the drive capabilities for a specified device.
@@ -235,7 +238,10 @@ extern "C" {
there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM.
*/
cdio_drive_cap_t cdio_get_drive_cap_dev (const char *device);
void cdio_get_drive_cap_dev (const char *device,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*!
Get the media catalog number (MCN) from the CD.

View File

@@ -1,5 +1,5 @@
/*
$Id: scsi_mmc.h,v 1.7 2004/07/08 06:29:45 rocky Exp $
$Id: scsi_mmc.h,v 1.8 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -100,6 +100,9 @@
in p. We interpret this and return a bit mask set according to the
capabilities.
*/
cdio_drive_cap_t cdio_get_drive_cap_mmc(const uint8_t *p);
void cdio_get_drive_cap_mmc(const uint8_t *p,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
#endif /* __SCSI_MMC_H__ */

View File

@@ -1,5 +1,5 @@
/*
$Id: types.h,v 1.18 2004/06/27 15:29:21 rocky Exp $
$Id: types.h,v 1.19 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -272,59 +272,79 @@ extern "C" {
typedef int cdio_fs_anal_t;
/*! The type of an drive capability bit mask. See below for values*/
typedef uint32_t cdio_drive_cap_t;
typedef uint32_t cdio_drive_read_cap_t;
typedef uint32_t cdio_drive_write_cap_t;
typedef uint32_t cdio_drive_misc_cap_t;
/*!
\brief Drive types returned by cdio_get_drive_cap()
Most are copied from the GNU/Linux the uniform CD-ROM driver header
linux/cdrom.h> NOTE: Setting a bit here means the presence of
a capability.
NOTE: Setting a bit here means the presence of a capability.
*/
#define CDIO_DRIVE_CAP_CLOSE_TRAY 0x00001 /**< caddy systems can't
close... */
#define CDIO_DRIVE_CAP_OPEN_TRAY 0x00002 /**< but can eject. */
#define CDIO_DRIVE_CAP_LOCK 0x00004 /**< disable manual eject */
#define CDIO_DRIVE_CAP_SELECT_SPEED 0x00008 /**< programmable speed */
#define CDIO_DRIVE_CAP_SELECT_DISC 0x00010 /**< select disc from juke-box */
#define CDIO_DRIVE_CAP_MULTI_SESSION 0x00020 /**< read sessions>1 */
#define CDIO_DRIVE_CAP_MCN 0x00040 /**< Medium Catalog Number */
#define CDIO_DRIVE_CAP_MEDIA_CHANGED 0x00080 /**< media changed */
#define CDIO_DRIVE_CAP_CD_AUDIO 0x00100 /**< drive can play CD audio */
#define CDIO_DRIVE_CAP_RESET 0x00200 /**< hard reset device */
#define CDIO_DRIVE_CAP_IOCTLS 0x00400 /**< driver has non-standard
ioctls */
#define CDIO_DRIVE_CAP_DRIVE_STATUS 0x00800 /**< driver implements drive
status */
#define CDIO_DRIVE_CAP_GENERIC_PACKET 0x01000 /**< driver implements generic
packets */
#define CDIO_DRIVE_CAP_CD_R 0x02000 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_CD_RW 0x04000 /**< drive can read CD-RW */
#define CDIO_DRIVE_CAP_DVD 0x08000 /**< drive can read DVD */
#define CDIO_DRIVE_CAP_DVD_R 0x10000 /**< drive can write DVD-R */
#define CDIO_DRIVE_CAP_DVD_RAM 0x20000 /**< drive can write DVD-RAM */
/**< These are not taken by GNU/Linux cdrom.h (yet) */
#define CDIO_DRIVE_CAP_ERROR 0x00000 /**< Error */
#define CDIO_DRIVE_CAP_FILE 0x40000 /**< drive is really a file, i.e
a CD file image */
#define CDIO_DRIVE_CAP_ERROR 0x40000 /**< Error */
#define CDIO_DRIVE_CAP_UNKNOWN 0x80000 /**< Dunno. It can be on if we
have only partial information
or are not completely certain
*/
*/
#define CDIO_DRIVE_CAP_MISC_CLOSE_TRAY 0x00001 /**< caddy systems can't
close... */
#define CDIO_DRIVE_CAP_MISC_OPEN_TRAY 0x00002 /**< but can eject. */
#define CDIO_DRIVE_CAP_MISC_LOCK 0x00004 /**< disable manual eject */
#define CDIO_DRIVE_CAP_MISC_SELECT_SPEED 0x00008 /**< programmable speed */
#define CDIO_DRIVE_CAP_MISC_SELECT_DISC 0x00010 /**< select disc from
juke-box */
#define CDIO_DRIVE_CAP_MISC_MULTI_SESSION 0x00020 /**< read sessions>1 */
#define CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED 0x00080 /**< media changed */
#define CDIO_DRIVE_CAP_MISC_RESET 0x00100 /**< hard reset device */
#define CDIO_DRIVE_CAP_MISC_FILE 0x20000 /**< drive is really a file,
i.e a CD file image */
/*! Reading masks.. */
#define CDIO_DRIVE_CAP_READ_AUDIO 0x00001 /**< drive can play CD audio */
#define CDIO_DRIVE_CAP_READ_CD_G 0x00002 /**< drive can read CD G */
#define CDIO_DRIVE_CAP_READ_CD_R 0x00004 /**< drive can read CD-R */
#define CDIO_DRIVE_CAP_READ_CD_RW 0x00008 /**< drive can read CD-RW */
#define CDIO_DRIVE_CAP_READ_DVD_R 0x00010 /**< drive can read DVD-R */
#define CDIO_DRIVE_CAP_READ_DVD_PR 0x00020 /**< drive can read DVD+R */
#define CDIO_DRIVE_CAP_READ_DVD_RAM 0x00040 /**< drive can read DVD-RAM */
#define CDIO_DRIVE_CAP_READ_DVD_ROM 0x00080 /**< drive can read DVD-ROM */
#define CDIO_DRIVE_CAP_READ_DVD_RW 0x00100 /**< drive can read DVD-RW */
#define CDIO_DRIVE_CAP_READ_DVD_RPW 0x00200 /**< drive can read DVD+RW */
#define CDIO_DRIVE_CAP_READ_C2_ERRS 0x00400 /**< has C2 error correction */
/*! Writing masks.. */
#define CDIO_DRIVE_CAP_WRITE_CD_R 0x00001 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_WRITE_CD_RW 0x00002 /**< drive can write CD-R */
#define CDIO_DRIVE_CAP_WRITE_DVD_R 0x00004 /**< drive can write DVD-R */
#define CDIO_DRIVE_CAP_WRITE_DVD_PR 0x00008 /**< drive can write DVD+R */
#define CDIO_DRIVE_CAP_WRITE_DVD_RAM 0x00010 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_DVD_RW 0x00020 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_DVD_RPW 0x00040 /**< drive can write DVD-RAM */
#define CDIO_DRIVE_CAP_WRITE_MT_RAIN 0x00080 /**< Mount Rainier */
#define CDIO_DRIVE_CAP_WRITE_BUF_UN 0x00100 /**< buffer underrun protect'n */
/**< Masks derived from above... */
#define CDIO_DRIVE_CAP_CD_WRITER \
(CDIO_DRIVE_CAP_CD_R|CDIO_DRIVE_CAP_CD_RW)
#define CDIO_DRIVE_CAP_WRITE_CD ( \
CDIO_DRIVE_CAP_WRITE_CD_R \
| CDIO_DRIVE_CAP_WRITE_CD_RW \
)
/**< Has some sort of CD writer ability */
#define CDIO_DRIVE_CAP_CD \
(CDIO_DRIVE_CAP_CD_AUDIO|CDIO_DRIVE_CAP_CD_WRITER)
/**< Has some sort of CD ability */
/**< Masks derived from above... */
#define CDIO_DRIVE_CAP_WRITE_DVD ( \
| CDIO_DRIVE_CAP_WRITE_DVD_R \
| CDIO_DRIVE_CAP_WRITE_DVD_PR \
| CDIO_DRIVE_CAP_WRITE_DVD_RAM \
| CDIO_DRIVE_CAP_WRITE_DVD_RW \
| CDIO_DRIVE_CAP_WRITE_DVD_RPW \
)
/**< Has some sort of DVD writer ability */
#define CDIO_DRIVE_CAP_DVD_WRITER \
(CDIO_DRIVE_CAP_DVD_R|CDIO_DRIVE_CAP_DVD_RAM)
/**< Has some sort of DVD writer ability */
#define CDIO_DRIVE_CAP_WRITE \
(CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD)
/**< Has some sort of DVD or CD writing ability */
/*!
track flags

View File

@@ -1,5 +1,5 @@
/*
$Id: _cdio_linux.c,v 1.67 2004/07/17 08:59:44 rocky Exp $
$Id: _cdio_linux.c,v 1.68 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.67 2004/07/17 08:59:44 rocky Exp $";
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.68 2004/07/17 22:16:47 rocky Exp $";
#include <string.h>
@@ -930,17 +930,63 @@ _get_mcn_linux (const void *env) {
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_linux (const void *env) {
static void
_get_drive_cap_linux (const void *env,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
const _img_private_t *_obj = env;
int32_t i_drivetype;
i_drivetype = ioctl (_obj->gen.fd, CDROM_GET_CAPABILITY, CDSL_CURRENT);
if (i_drivetype < 0) return CDIO_DRIVE_CAP_ERROR;
if (i_drivetype < 0) {
*p_read_cap = CDIO_DRIVE_CAP_ERROR;
*p_write_cap = CDIO_DRIVE_CAP_ERROR;
*p_misc_cap = CDIO_DRIVE_CAP_ERROR;
return;
}
*p_read_cap = 0;
*p_write_cap = 0;
*p_misc_cap = 0;
/* If >= 0 we can safely cast as cdio_drive_cap_t and return */
return (cdio_drive_cap_t) i_drivetype;
/* Reader */
if (i_drivetype & CDC_PLAY_AUDIO)
*p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
if (i_drivetype & CDC_CD_R)
*p_read_cap |= CDIO_DRIVE_CAP_READ_CD_R;
if (i_drivetype & CDC_CD_RW)
*p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
if (i_drivetype & CDC_DVD)
*p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
/* Writer */
if (i_drivetype & CDC_CD_RW)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_CD_RW;
if (i_drivetype & CDC_DVD_R)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
if (i_drivetype & CDC_DVD_RAM)
*p_read_cap |= CDIO_DRIVE_CAP_WRITE_DVD_RAM;
/* Misc */
if (i_drivetype & CDC_CLOSE_TRAY)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
if (i_drivetype & CDC_OPEN_TRAY)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_OPEN_TRAY;
if (i_drivetype & CDC_LOCK)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
if (i_drivetype & CDC_SELECT_SPEED)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_SPEED;
if (i_drivetype & CDC_SELECT_DISC)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_SELECT_DISC;
if (i_drivetype & CDC_MULTI_SESSION)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
if (i_drivetype & CDC_MEDIA_CHANGED)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED;
if (i_drivetype & CDC_RESET)
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_RESET;
}
/*!

View File

@@ -1,5 +1,5 @@
/*
$Id: _cdio_sunos.c,v 1.52 2004/07/17 15:43:57 rocky Exp $
$Id: _cdio_sunos.c,v 1.53 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -38,7 +38,7 @@
#ifdef HAVE_SOLARIS_CDROM
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.52 2004/07/17 15:43:57 rocky Exp $";
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.53 2004/07/17 22:16:47 rocky Exp $";
#ifdef HAVE_GLOB_H
#include <glob.h>
@@ -142,7 +142,7 @@ _cdio_init (_img_private_t *env)
*/
static int
_cdio_read_audio_sectors (void *user_data, void *data, lsn_t lsn,
_read_audio_sectors_solaris (void *user_data, void *data, lsn_t lsn,
unsigned int nblocks)
{
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
@@ -189,8 +189,8 @@ _cdio_read_audio_sectors (void *user_data, void *data, lsn_t lsn,
from lsn. Returns 0 if no error.
*/
static int
_cdio_read_mode1_sector (void *env, void *data, lsn_t lsn,
bool b_form2)
_read_mode1_sector_solaris (void *env, void *data, lsn_t lsn,
bool b_form2)
{
#if FIXED
@@ -207,8 +207,8 @@ _cdio_read_mode1_sector (void *env, void *data, lsn_t lsn,
Returns 0 if no error.
*/
static int
_cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks)
_read_mode1_sectors_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks)
{
_img_private_t *env = user_data;
unsigned int i;
@@ -216,9 +216,9 @@ _cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
for (i = 0; i < nblocks; i++) {
if ( (retval = _cdio_read_mode1_sector (env,
if ( (retval = _read_mode1_sector_solaris (env,
((char *)data) + (blocksize * i),
lsn + i, b_form2)) )
lsn + i, b_form2)) )
return retval;
}
return 0;
@@ -229,8 +229,8 @@ _cdio_read_mode1_sectors (void *user_data, void *data, lsn_t lsn,
Returns 0 if no error.
*/
static int
_cdio_read_mode2_sector (void *user_data, void *data, lsn_t lsn,
bool b_form2)
_read_mode2_sector_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2)
{
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
struct cdrom_msf *msf = (struct cdrom_msf *) &buf;
@@ -288,8 +288,8 @@ _cdio_read_mode2_sector (void *user_data, void *data, lsn_t lsn,
Returns 0 if no error.
*/
static int
_cdio_read_mode2_sectors (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks)
_read_mode2_sectors_solaris (void *user_data, void *data, lsn_t lsn,
bool b_form2, unsigned int nblocks)
{
_img_private_t *env = user_data;
unsigned int i;
@@ -297,9 +297,9 @@ _cdio_read_mode2_sectors (void *user_data, void *data, lsn_t lsn,
unsigned int blocksize = b_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE;
for (i = 0; i < nblocks; i++) {
if ( (retval = _cdio_read_mode2_sector (env,
if ( (retval = _read_mode2_sector_solaris (env,
((char *)data) + (blocksize * i),
lsn + i, b_form2)) )
lsn + i, b_form2)) )
return retval;
}
return 0;
@@ -497,7 +497,7 @@ _get_cdtext_solaris (void *user_data, track_t i_track)
also free obj.
*/
static int
_cdio_eject_media (void *user_data) {
_eject_media_solaris (void *user_data) {
_img_private_t *env = user_data;
int ret;
@@ -536,7 +536,7 @@ _cdio_malloc_and_zero(size_t size) {
Return the value associated with the key "arg".
*/
static const char *
_cdio_get_arg (void *user_data, const char key[])
_get_arg_solaris (void *user_data, const char key[])
{
_img_private_t *env = user_data;
@@ -593,13 +593,15 @@ cdio_get_default_device_solaris(void)
string when done with it.
*/
static cdio_drive_cap_t
_cdio_get_drive_cap_solaris (const void *user_data)
static void
_get_drive_cap_solaris (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
const _img_private_t *env = user_data;
int status;
struct uscsi_cmd my_cmd;
int32_t i_drivetype = 0;
uint8_t buf[192] = { 0, };
unsigned char my_rq_buf[26] = {0, };
@@ -643,7 +645,7 @@ _cdio_get_drive_cap_solaris (const void *user_data)
/* Don't handle these yet. */
break;
case CDIO_MMC_CAPABILITIES_PAGE:
i_drivetype |= cdio_get_drive_cap_mmc(p);
cdio_get_drive_cap_mmc(p, p_read_cap, p_write_cap, p_misc_cap);
break;
default: ;
}
@@ -665,7 +667,7 @@ _cdio_get_drive_cap_solaris (const void *user_data)
*/
static char *
_cdio_get_mcn_solaris (const void *user_data)
_get_mcn_solaris (const void *user_data)
{
const _img_private_t *env = user_data;
struct uscsi_cmd my_cmd;
@@ -885,15 +887,15 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
char *psz_source;
cdio_funcs _funcs = {
.eject_media = _cdio_eject_media,
.eject_media = _eject_media_solaris,
.free = cdio_generic_free,
.get_arg = _cdio_get_arg,
.get_arg = _get_arg_solaris,
.get_cdtext = _get_cdtext_solaris,
.get_devices = cdio_get_devices_solaris,
.get_default_device = cdio_get_default_device_solaris,
.get_drive_cap = _cdio_get_drive_cap_solaris,
.get_drive_cap = _get_drive_cap_solaris,
.get_first_track_num= _cdio_get_first_track_num,
.get_mcn = _cdio_get_mcn_solaris,
.get_mcn = _get_mcn_solaris,
.get_num_tracks = _cdio_get_num_tracks,
.get_track_format = _cdio_get_track_format,
.get_track_green = _cdio_get_track_green,
@@ -901,11 +903,11 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
.get_track_msf = _cdio_get_track_msf,
.lseek = cdio_generic_lseek,
.read = cdio_generic_read,
.read_audio_sectors = _cdio_read_audio_sectors,
.read_mode1_sector = _cdio_read_mode1_sector,
.read_mode1_sectors = _cdio_read_mode1_sectors,
.read_mode2_sector = _cdio_read_mode2_sector,
.read_mode2_sectors = _cdio_read_mode2_sectors,
.read_audio_sectors = _read_audio_sectors_solaris,
.read_mode1_sector = _read_mode1_sector_solaris,
.read_mode1_sectors = _read_mode1_sectors_solaris,
.read_mode2_sector = _read_mode2_sector_solaris,
.read_mode2_sectors = _read_mode2_sectors_solaris,
.stat_size = _cdio_stat_size,
.set_arg = _set_arg_solaris
};
@@ -918,7 +920,7 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
_data->b_cdtext_init = false;
if (NULL == psz_orig_source) {
psz_source=cdio_get_default_device_solaris();
psz_source=_get_default_device_solaris();
if (NULL == psz_source) return NULL;
_set_arg_solaris(_data, "source", psz_source);
free(psz_source);

View File

@@ -1,5 +1,5 @@
/*
$Id: cdio.c,v 1.61 2004/07/17 02:18:28 rocky Exp $
$Id: cdio.c,v 1.62 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -39,7 +39,7 @@
#include <cdio/logging.h>
#include "cdio_private.h"
static const char _rcsid[] = "$Id: cdio.c,v 1.61 2004/07/17 02:18:28 rocky Exp $";
static const char _rcsid[] = "$Id: cdio.c,v 1.62 2004/07/17 22:16:47 rocky Exp $";
const char *track_format2str[6] =
@@ -427,19 +427,22 @@ cdio_get_devices_with_cap (char* search_devices[],
string when done with it.
*/
cdio_drive_cap_t
cdio_get_drive_cap (const CdIo *cdio)
void
cdio_get_drive_cap (const CdIo *cdio,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
cdio_drive_cap_t i_drivetype =
CDIO_DRIVE_CAP_UNKNOWN | CDIO_DRIVE_CAP_CD_AUDIO; /* A safe guess. */
/* This seems like a safe bet. */
*p_read_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_write_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_misc_cap = CDIO_DRIVE_CAP_UNKNOWN;
if (cdio && cdio->op.get_drive_cap) {
i_drivetype=cdio->op.get_drive_cap(cdio->env);
cdio->op.get_drive_cap(cdio->env, p_read_cap, p_write_cap, p_misc_cap);
}
return i_drivetype;
}
/*!
Return the the kind of drive capabilities of device.
@@ -447,18 +450,23 @@ cdio_get_drive_cap (const CdIo *cdio)
string when done with it.
*/
cdio_drive_cap_t
cdio_get_drive_cap_dev (const char *device)
void
cdio_get_drive_cap_dev (const char *device,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
cdio_drive_cap_t i_drivetype = CDIO_DRIVE_CAP_UNKNOWN;
/* This seems like a safe bet. */
*p_read_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_write_cap = CDIO_DRIVE_CAP_UNKNOWN;
*p_misc_cap = CDIO_DRIVE_CAP_UNKNOWN;
CdIo *cdio=scan_for_driver(CDIO_MIN_DRIVER, CDIO_MAX_DRIVER,
device, NULL);
if (cdio) {
i_drivetype=cdio_get_drive_cap(cdio);
cdio_get_drive_cap(cdio, p_read_cap, p_write_cap, p_misc_cap);
cdio_destroy(cdio);
}
return i_drivetype;
}

View File

@@ -1,5 +1,5 @@
/*
$Id: cdio_private.h,v 1.29 2004/07/17 02:18:28 rocky Exp $
$Id: cdio_private.h,v 1.30 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -87,8 +87,10 @@ extern "C" {
See cd_types.h for a list of bitmasks for the drive type;
*/
cdio_drive_cap_t (*get_drive_cap) (const void *env);
void (*get_drive_cap) (const void *env,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap);
/*!
Return the media catalog number MCN from the CD or NULL if
there is none or we don't have the ability to get it.

View File

@@ -1,5 +1,5 @@
/*
$Id: bincue.c,v 1.34 2004/07/17 02:18:28 rocky Exp $
$Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -26,7 +26,7 @@
(*.cue).
*/
static const char _rcsid[] = "$Id: bincue.c,v 1.34 2004/07/17 02:18:28 rocky Exp $";
static const char _rcsid[] = "$Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $";
#include "image.h"
#include "cdio_assert.h"
@@ -838,23 +838,6 @@ cdio_get_default_device_bincue(void)
return drive;
}
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_bincue (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*!
Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error.
@@ -1029,7 +1012,7 @@ cdio_open_cue (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_bincue,
.get_default_device = cdio_get_default_device_bincue,
.get_drive_cap = _get_drive_cap_bincue,
.get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/*
$Id: cdrdao.c,v 1.19 2004/07/11 14:25:07 rocky Exp $
$Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
toc reading routine adapted from cuetools
@@ -25,7 +25,7 @@
(*.cue).
*/
static const char _rcsid[] = "$Id: cdrdao.c,v 1.19 2004/07/11 14:25:07 rocky Exp $";
static const char _rcsid[] = "$Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $";
#include "image.h"
#include "cdio_assert.h"
@@ -878,23 +878,6 @@ cdio_get_default_device_cdrdao(void)
return drive;
}
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_cdrdao (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*!
Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error.
@@ -1008,7 +991,7 @@ cdio_open_cdrdao (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_cdrdao,
.get_default_device = cdio_get_default_device_cdrdao,
.get_drive_cap = _get_drive_cap_cdrdao,
.get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/*
$Id: nrg.c,v 1.31 2004/07/11 14:25:07 rocky Exp $
$Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
@@ -45,7 +45,7 @@
#include "_cdio_stdio.h"
#include "nrg.h"
static const char _rcsid[] = "$Id: nrg.c,v 1.31 2004/07/11 14:25:07 rocky Exp $";
static const char _rcsid[] = "$Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $";
/* reader */
@@ -1088,23 +1088,6 @@ cdio_get_default_device_nrg(void)
return drive;
}
/*!
Return the the kind of drive capabilities of device.
Note: string is malloc'd so caller should free() then returned
string when done with it.
*/
static cdio_drive_cap_t
_get_drive_cap_nrg (const void *user_data) {
/* There may be more in the future but these we can handle now.
Also, we know we can't handle
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, SELECT_DISC
*/
return CDIO_DRIVE_CAP_FILE | CDIO_DRIVE_CAP_MCN | CDIO_DRIVE_CAP_CD_AUDIO ;
}
/*!
Return the number of tracks in the current medium.
CDIO_INVALID_TRACK is returned on error.
@@ -1206,7 +1189,7 @@ cdio_open_nrg (const char *psz_source)
.get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_nrg,
.get_default_device = cdio_get_default_device_nrg,
.get_drive_cap = _get_drive_cap_nrg,
.get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image,
.get_num_tracks = _get_num_tracks_image,

View File

@@ -1,5 +1,5 @@
/*
$Id: image_common.h,v 1.12 2004/07/17 02:18:28 rocky Exp $
$Id: image_common.h,v 1.13 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -217,4 +217,29 @@ _set_arg_image (void *user_data, const char key[], const char value[])
return 0;
}
/*!
Return the the kind of drive capabilities of device.
*/
static void
_get_drive_cap_image (const void *user_data,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
*p_read_cap = CDIO_DRIVE_CAP_READ_AUDIO
| CDIO_DRIVE_CAP_READ_CD_G
| CDIO_DRIVE_CAP_READ_CD_R
| CDIO_DRIVE_CAP_READ_CD_RW
;
*p_write_cap = 0;
/* In the future we may want to simulate
LOCK, OPEN_TRAY, CLOSE_TRAY, SELECT_SPEED, etc.
*/
*p_misc_cap = CDIO_DRIVE_CAP_MISC_FILE;
}
#endif /* __CDIO_IMAGE_COMMON_H__ */

View File

@@ -1,6 +1,6 @@
/* Common MMC routines.
$Id: scsi_mmc.c,v 1.3 2004/06/28 00:39:21 rocky Exp $
$Id: scsi_mmc.c,v 1.4 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -31,25 +31,27 @@
in p. We interpret this and return a bit mask set according to the
capabilities.
*/
cdio_drive_cap_t
cdio_get_drive_cap_mmc(const uint8_t *p)
void
cdio_get_drive_cap_mmc(const uint8_t *p,
cdio_drive_read_cap_t *p_read_cap,
cdio_drive_write_cap_t *p_write_cap,
cdio_drive_misc_cap_t *p_misc_cap)
{
cdio_drive_cap_t i_drivetype=0;
/* Reader */
if (p[2] & 0x02) i_drivetype |= CDIO_DRIVE_CAP_CD_RW;
if (p[2] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_DVD;
if (p[5] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_AUDIO;
if (p[2] & 0x02) *p_read_cap |= CDIO_DRIVE_CAP_READ_CD_RW;
if (p[2] & 0x08) *p_read_cap |= CDIO_DRIVE_CAP_READ_DVD_ROM;
if (p[5] & 0x01) *p_read_cap |= CDIO_DRIVE_CAP_READ_AUDIO;
/* Writer */
if (p[3] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_CD_R;
if (p[3] & 0x10) i_drivetype |= CDIO_DRIVE_CAP_DVD_R;
if (p[3] & 0x20) i_drivetype |= CDIO_DRIVE_CAP_DVD_RAM;
if (p[3] & 0x01) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_CD_R;
if (p[3] & 0x10) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_DVD_R;
if (p[3] & 0x20) *p_write_cap |= CDIO_DRIVE_CAP_WRITE_DVD_RAM;
if (p[4] & 0x40) i_drivetype |= CDIO_DRIVE_CAP_MULTI_SESSION;
/* Misc */
if (p[4] & 0x40) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_MULTI_SESSION;
if (p[6] & 0x01) i_drivetype |= CDIO_DRIVE_CAP_LOCK;
if (p[6] & 0x08) i_drivetype |= CDIO_DRIVE_CAP_OPEN_TRAY;
if (p[6] & 0x01) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_LOCK;
if (p[6] & 0x08) *p_misc_cap |= CDIO_DRIVE_CAP_MISC_OPEN_TRAY;
if (p[6] >> 5 != 0)
i_drivetype |= CDIO_DRIVE_CAP_CLOSE_TRAY;
return i_drivetype;
*p_misc_cap |= CDIO_DRIVE_CAP_MISC_CLOSE_TRAY;
}

View File

@@ -1,5 +1,5 @@
/*
$Id: cd-drive.c,v 1.2 2004/04/25 03:52:37 rocky Exp $
$Id: cd-drive.c,v 1.3 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -229,10 +229,14 @@ main(int argc, const char *argv[])
cd_drives = cdio_get_devices(DRIVER_DEVICE);
if (NULL != cd_drives)
for( cd = cd_drives; *cd != NULL; cd++ ) {
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap_dev(*cd);
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_get_drive_cap_dev(*cd, &i_read_cap, &i_write_cap, &i_misc_cap);
printf("Drive %s\n", *cd);
print_drive_capabilities(i_drive_cap);
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
printf("\n");
}
@@ -241,11 +245,15 @@ main(int argc, const char *argv[])
cd_drives = NULL;
} else {
/* Print CD-drive info for given source */
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap_dev(source_name);
cdio_get_drive_cap_dev(source_name, &i_read_cap, &i_write_cap,
&i_misc_cap);
printf("Drive %s\n", source_name);
print_drive_capabilities(i_drive_cap);
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
printf("\n");
}

View File

@@ -1,5 +1,5 @@
/*
$Id: cd-info.c,v 1.72 2004/07/17 02:18:28 rocky Exp $
$Id: cd-info.c,v 1.73 2004/07/17 22:16:47 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
@@ -966,8 +966,12 @@ main(int argc, const char *argv[])
}
{
cdio_drive_cap_t i_drive_cap = cdio_get_drive_cap(cdio);
print_drive_capabilities(i_drive_cap);
cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap;
cdio_get_drive_cap(cdio, &i_read_cap, &i_write_cap, &i_misc_cap);
print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
}
if (opts.list_drives) {

View File

@@ -1,5 +1,5 @@
/*
$Id: util.c,v 1.9 2004/06/27 16:37:34 rocky Exp $
$Id: util.c,v 1.10 2004/07/17 22:16:48 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -87,52 +87,60 @@ fillout_device_name(const char *device_name)
}
/* Prints out drive capabilities */
void
print_drive_capabilities(cdio_drive_cap_t i_drive_cap)
void print_drive_capabilities(cdio_drive_read_cap_t i_read_cap,
cdio_drive_write_cap_t i_write_cap,
cdio_drive_misc_cap_t i_misc_cap)
{
if (CDIO_DRIVE_CAP_ERROR == i_drive_cap) {
printf("Error in getting drive properties\n");
if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
printf("Error in getting drive hardware properties\n");
} else {
printf("Hardware : %s\n",
i_drive_cap & CDIO_DRIVE_CAP_FILE
printf(_("Hardware : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_FILE
? "Disk Image" : "CD-ROM or DVD");
printf(_("Can open tray : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_OPEN_TRAY ? "Yes" : "No");
printf(_("Can close tray : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CLOSE_TRAY ? "Yes" : "No");
printf(_("Can disable manual eject: %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_LOCK ? "Yes" : "No");
printf(_("Can select juke-box disc: %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_SELECT_DISC ? "Yes" : "No");
printf(_("Can open tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_OPEN_TRAY ? "Yes" : "No");
printf(_("Can close tray : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_CLOSE_TRAY ? "Yes" : "No");
printf(_("Can disable manual eject : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_LOCK ? "Yes" : "No");
printf(_("Can select juke-box disc : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_DISC ? "Yes" : "No");
printf(_("Can set drive speed : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_SELECT_SPEED ? "Yes" : "No");
printf(_("Can detect if CD changed: %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MEDIA_CHANGED ? "Yes" : "No");
printf(_("Can read Media Cat. No. : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MCN ? "Yes" : "No");
printf(_("Can read sessions > 1 . : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_MULTI_SESSION ? "Yes" : "No");
printf(_("Can hard reset device : %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_RESET ? "Yes" : "No");
printf(_("Compact Disc : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD ? "Yes" : "No");
printf(_(" Can play audio : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_RW ? "Yes" : "No");
printf(_(" Can write CD-R : %s\n\n"),
i_drive_cap & CDIO_DRIVE_CAP_CD_R ? "Yes" : "No");
printf(_("Digital Versital Disc : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_drive_cap & CDIO_DRIVE_CAP_DVD_RAM ? "Yes" : "No");
printf(_("Can set drive speed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_SPEED ? "Yes" : "No");
printf(_("Can detect if CD changed : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED ? "Yes" : "No");
printf(_("Can read multiple sessions : %s\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_MULTI_SESSION ? "Yes" : "No");
printf(_("Can hard reset device : %s\n\n"),
i_misc_cap & CDIO_DRIVE_CAP_MISC_RESET ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_UNKNOWN == i_drive_cap) {
printf("Not completely sure about drive properties\n\n");
if (CDIO_DRIVE_CAP_ERROR == i_read_cap) {
printf("Error in getting drive reading properties\n");
} else {
printf("Reading....\n");
printf(_(" Can play audio : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_AUDIO ? "Yes" : "No");
printf(_(" Can read CD-R : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_R ? "Yes" : "No");
printf(_(" Can read CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can read DVD-ROM : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_DVD_ROM ? "Yes" : "No");
}
if (CDIO_DRIVE_CAP_ERROR == i_write_cap) {
printf("Error in getting drive writing properties\n");
} else {
printf("\nWriting....\n");
printf(_(" Can write CD-RW : %s\n"),
i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW ? "Yes" : "No");
printf(_(" Can write DVD-R : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_R ? "Yes" : "No");
printf(_(" Can write DVD-RAM : %s\n"),
i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM ? "Yes" : "No");
}
}

View File

@@ -1,5 +1,5 @@
/*
$Id: util.h,v 1.4 2004/05/04 02:06:48 rocky Exp $
$Id: util.h,v 1.5 2004/07/17 22:16:48 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -101,6 +101,9 @@ void print_version (char *program_name, const char *version,
char *fillout_device_name(const char *device_name);
/* Prints out drive capabilities */
void print_drive_capabilities(cdio_drive_cap_t i_drive_cap);
void print_drive_capabilities(cdio_drive_read_cap_t p_read_cap,
cdio_drive_write_cap_t p_write_cap,
cdio_drive_misc_cap_t p_misc_cap);
#endif /* UTIL_H */

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
Media Catalog Number (MCN): 0000010271955
__________________________________
CD Analysis Report

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
Media Catalog Number (MCN): 0000010271955
__________________________________
CD Analysis Report

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 1)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 2)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 2)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 2)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 3)
#: MSF LSN Type Green?

View File

@@ -1,26 +1,27 @@
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject: No
Can select juke-box disc: No
Hardware : Disk Image
Can open tray : No
Can close tray : No
Can disable manual eject : No
Can select juke-box disc : No
Can set drive speed : No
Can detect if CD changed: No
Can read Media Cat. No. : Yes
Can read sessions > 1 . : No
Can hard reset device : No
Can set drive speed : No
Can detect if CD changed : No
Can read multiple sessions : No
Can hard reset device : No
Compact Disc : Yes
Can play audio : Yes
Can read CD-RW : No
Can write CD-R : No
Reading....
Can play audio : Yes
Can read CD-R : Yes
Can read CD-RW : Yes
Can read DVD-ROM : No
Digital Versital Disc : No
Can write DVD-R : No
Can write DVD-RAM : No
Writing....
Can write CD-RW : Yes
Can write DVD-R : No
Can write DVD-RAM : No
__________________________________
CD-ROM Track List (1 - 5)
#: MSF LSN Type Green?