On ioctl's, a negative number is considered an unspecified error while
a positive number is not. Replace tabs in lines with blanks.
This commit is contained in:
@@ -105,8 +105,8 @@ typedef struct {
|
|||||||
} _img_private_t;
|
} _img_private_t;
|
||||||
|
|
||||||
/* Some ioctl() errno values which occur when the tray is empty */
|
/* Some ioctl() errno values which occur when the tray is empty */
|
||||||
#define ERRNO_TRAYEMPTY(errno) \
|
#define ERRNO_TRAYEMPTY(errno) \
|
||||||
((errno == EIO) || (errno == ENOENT) || (errno == EINVAL))
|
((errno == EIO) || (errno == ENOENT) || (errno == EINVAL))
|
||||||
|
|
||||||
/**** prototypes for static functions ****/
|
/**** prototypes for static functions ****/
|
||||||
static bool is_cdrom_linux(const char *drive, char *mnttype);
|
static bool is_cdrom_linux(const char *drive, char *mnttype);
|
||||||
@@ -137,7 +137,7 @@ str_to_access_mode_linux(const char *psz_access_mode)
|
|||||||
return _AM_MMC_RDWR;
|
return _AM_MMC_RDWR;
|
||||||
else {
|
else {
|
||||||
cdio_warn ("unknown access type: %s. Default IOCTL used.",
|
cdio_warn ("unknown access type: %s. Default IOCTL used.",
|
||||||
psz_access_mode);
|
psz_access_mode);
|
||||||
return default_access_mode;
|
return default_access_mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,13 +160,13 @@ check_mounts_linux(const char *mtab)
|
|||||||
i_mnt_type = strlen(mntent->mnt_type) + 1;
|
i_mnt_type = strlen(mntent->mnt_type) + 1;
|
||||||
mnt_type = calloc(1, i_mnt_type);
|
mnt_type = calloc(1, i_mnt_type);
|
||||||
if (mnt_type == NULL)
|
if (mnt_type == NULL)
|
||||||
continue; /* maybe you'll get lucky next time. */
|
continue; /* maybe you'll get lucky next time. */
|
||||||
|
|
||||||
i_mnt_dev = strlen(mntent->mnt_fsname) + 1;
|
i_mnt_dev = strlen(mntent->mnt_fsname) + 1;
|
||||||
mnt_dev = calloc(1, i_mnt_dev);
|
mnt_dev = calloc(1, i_mnt_dev);
|
||||||
if (mnt_dev == NULL) {
|
if (mnt_dev == NULL) {
|
||||||
free(mnt_type);
|
free(mnt_type);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(mnt_type, mntent->mnt_type, i_mnt_type);
|
strncpy(mnt_type, mntent->mnt_type, i_mnt_type);
|
||||||
@@ -174,35 +174,35 @@ check_mounts_linux(const char *mtab)
|
|||||||
|
|
||||||
/* Handle "supermount" filesystem mounts */
|
/* Handle "supermount" filesystem mounts */
|
||||||
if ( strcmp(mnt_type, "supermount") == 0 ) {
|
if ( strcmp(mnt_type, "supermount") == 0 ) {
|
||||||
tmp = strstr(mntent->mnt_opts, "fs=");
|
tmp = strstr(mntent->mnt_opts, "fs=");
|
||||||
if ( tmp ) {
|
if ( tmp ) {
|
||||||
free(mnt_type);
|
free(mnt_type);
|
||||||
mnt_type = strdup(tmp + strlen("fs="));
|
mnt_type = strdup(tmp + strlen("fs="));
|
||||||
if ( mnt_type ) {
|
if ( mnt_type ) {
|
||||||
tmp = strchr(mnt_type, ',');
|
tmp = strchr(mnt_type, ',');
|
||||||
if ( tmp ) {
|
if ( tmp ) {
|
||||||
*tmp = '\0';
|
*tmp = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tmp = strstr(mntent->mnt_opts, "dev=");
|
tmp = strstr(mntent->mnt_opts, "dev=");
|
||||||
if ( tmp ) {
|
if ( tmp ) {
|
||||||
free(mnt_dev);
|
free(mnt_dev);
|
||||||
mnt_dev = strdup(tmp + strlen("dev="));
|
mnt_dev = strdup(tmp + strlen("dev="));
|
||||||
if ( mnt_dev ) {
|
if ( mnt_dev ) {
|
||||||
tmp = strchr(mnt_dev, ',');
|
tmp = strchr(mnt_dev, ',');
|
||||||
if ( tmp ) {
|
if ( tmp ) {
|
||||||
*tmp = '\0';
|
*tmp = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( strcmp(mnt_type, "iso9660") == 0 ) {
|
if ( strcmp(mnt_type, "iso9660") == 0 ) {
|
||||||
if (is_cdrom_linux(mnt_dev, mnt_type) > 0) {
|
if (is_cdrom_linux(mnt_dev, mnt_type) > 0) {
|
||||||
free(mnt_type);
|
free(mnt_type);
|
||||||
endmntent(mntfp);
|
endmntent(mntfp);
|
||||||
return mnt_dev;
|
return mnt_dev;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(mnt_dev);
|
free(mnt_dev);
|
||||||
free(mnt_type);
|
free(mnt_type);
|
||||||
@@ -397,9 +397,9 @@ get_arg_linux (void *env, const char key[])
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
get_drive_cap_linux (const void *p_user_data,
|
get_drive_cap_linux (const void *p_user_data,
|
||||||
/*out*/ cdio_drive_read_cap_t *p_read_cap,
|
/*out*/ cdio_drive_read_cap_t *p_read_cap,
|
||||||
/*out*/ cdio_drive_write_cap_t *p_write_cap,
|
/*out*/ cdio_drive_write_cap_t *p_write_cap,
|
||||||
/*out*/ cdio_drive_misc_cap_t *p_misc_cap)
|
/*out*/ cdio_drive_misc_cap_t *p_misc_cap)
|
||||||
{
|
{
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
int32_t i_drivetype;
|
int32_t i_drivetype;
|
||||||
@@ -821,7 +821,7 @@ get_discmode_linux (void *p_user_data)
|
|||||||
return CDIO_DISC_MODE_CD_DA;
|
return CDIO_DISC_MODE_CD_DA;
|
||||||
case CDS_DATA_1:
|
case CDS_DATA_1:
|
||||||
case CDS_DATA_2: /* Actually, recent GNU/Linux kernels don't return
|
case CDS_DATA_2: /* Actually, recent GNU/Linux kernels don't return
|
||||||
CDS_DATA_2, but just in case. */
|
CDS_DATA_2, but just in case. */
|
||||||
return CDIO_DISC_MODE_CD_DATA;
|
return CDIO_DISC_MODE_CD_DATA;
|
||||||
case CDS_MIXED:
|
case CDS_MIXED:
|
||||||
return CDIO_DISC_MODE_CD_MIXED;
|
return CDIO_DISC_MODE_CD_MIXED;
|
||||||
@@ -871,7 +871,7 @@ is_cdrom_linux(const char *drive, char *mnttype)
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
read_audio_sectors_linux (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
read_audio_sectors_linux (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
||||||
uint32_t i_blocks)
|
uint32_t i_blocks)
|
||||||
{
|
{
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
return mmc_read_sectors( p_env->gen.cdio, p_buf, i_lsn,
|
return mmc_read_sectors( p_env->gen.cdio, p_buf, i_lsn,
|
||||||
@@ -883,7 +883,7 @@ read_audio_sectors_linux (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
_read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
||||||
uint32_t i_blocks, bool b_read_10)
|
uint32_t i_blocks, bool b_read_10)
|
||||||
{
|
{
|
||||||
mmc_cdb_t cdb = {{0, }};
|
mmc_cdb_t cdb = {{0, }};
|
||||||
|
|
||||||
@@ -905,8 +905,8 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
M2RAW_SECTOR_SIZE * i_blocks,
|
M2RAW_SECTOR_SIZE * i_blocks,
|
||||||
p_buf)))
|
p_buf)))
|
||||||
{
|
{
|
||||||
mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
|
mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore blocksize. */
|
/* Restore blocksize. */
|
||||||
@@ -929,7 +929,7 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
|
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
_read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
||||||
uint32_t i_blocks, bool b_read_10)
|
uint32_t i_blocks, bool b_read_10)
|
||||||
{
|
{
|
||||||
unsigned int l = 0;
|
unsigned int l = 0;
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
@@ -940,10 +940,10 @@ _read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
void *p_buf2 = ((char *)p_buf ) + (l * M2RAW_SECTOR_SIZE);
|
void *p_buf2 = ((char *)p_buf ) + (l * M2RAW_SECTOR_SIZE);
|
||||||
|
|
||||||
retval |= _read_mode2_sectors_mmc (p_env, p_buf2, lba + l,
|
retval |= _read_mode2_sectors_mmc (p_env, p_buf2, lba + l,
|
||||||
i_blocks2, b_read_10);
|
i_blocks2, b_read_10);
|
||||||
|
|
||||||
if (retval)
|
if (retval)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
i_blocks -= i_blocks2;
|
i_blocks -= i_blocks2;
|
||||||
l += i_blocks2;
|
l += i_blocks2;
|
||||||
@@ -958,7 +958,7 @@ _read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@@ -983,38 +983,38 @@ _read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
|
|
||||||
case _AM_IOCTL:
|
case _AM_IOCTL:
|
||||||
if (ioctl (p_env->gen.fd, CDROMREADMODE1, &buf) == -1)
|
if (ioctl (p_env->gen.fd, CDROMREADMODE1, &buf) == -1)
|
||||||
{
|
{
|
||||||
perror ("ioctl()");
|
perror ("ioctl()");
|
||||||
return 1;
|
return 1;
|
||||||
/* exit (EXIT_FAILURE); */
|
/* exit (EXIT_FAILURE); */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case _AM_READ_CD:
|
case _AM_READ_CD:
|
||||||
case _AM_READ_10:
|
case _AM_READ_10:
|
||||||
if (_read_mode2_sectors (p_env, buf, lsn, 1,
|
if (_read_mode2_sectors (p_env, buf, lsn, 1,
|
||||||
(p_env->access_mode == _AM_READ_10)))
|
(p_env->access_mode == _AM_READ_10)))
|
||||||
{
|
{
|
||||||
perror ("ioctl()");
|
perror ("ioctl()");
|
||||||
if (p_env->access_mode == _AM_READ_CD)
|
if (p_env->access_mode == _AM_READ_CD)
|
||||||
{
|
{
|
||||||
cdio_info ("READ_CD failed; switching to READ_10 mode...");
|
cdio_info ("READ_CD failed; switching to READ_10 mode...");
|
||||||
p_env->access_mode = _AM_READ_10;
|
p_env->access_mode = _AM_READ_10;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
|
cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
|
||||||
p_env->access_mode = _AM_IOCTL;
|
p_env->access_mode = _AM_IOCTL;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy (p_data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
memcpy (p_data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
||||||
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
return cdio_generic_read_form1_sector(p_user_data, p_data, lsn);
|
return cdio_generic_read_form1_sector(p_user_data, p_data, lsn);
|
||||||
@@ -1029,7 +1029,7 @@ _read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2, uint32_t i_blocks)
|
bool b_form2, uint32_t i_blocks)
|
||||||
{
|
{
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -1038,8 +1038,8 @@ _read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
|
|
||||||
for (i = 0; i < i_blocks; i++) {
|
for (i = 0; i < i_blocks; i++) {
|
||||||
if ( (retval = _read_mode1_sector_linux (p_env,
|
if ( (retval = _read_mode1_sector_linux (p_env,
|
||||||
((char *)p_data) + (blocksize*i),
|
((char *)p_data) + (blocksize*i),
|
||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return DRIVER_OP_SUCCESS;
|
return DRIVER_OP_SUCCESS;
|
||||||
@@ -1051,7 +1051,7 @@ _read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
char buf[M2RAW_SECTOR_SIZE] = { 0, };
|
char buf[M2RAW_SECTOR_SIZE] = { 0, };
|
||||||
struct cdrom_msf *msf = (struct cdrom_msf *) &buf;
|
struct cdrom_msf *msf = (struct cdrom_msf *) &buf;
|
||||||
@@ -1075,33 +1075,33 @@ _read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
case _AM_IOCTL:
|
case _AM_IOCTL:
|
||||||
case _AM_MMC_RDWR:
|
case _AM_MMC_RDWR:
|
||||||
if (ioctl (p_env->gen.fd, CDROMREADMODE2, &buf) == -1)
|
if (ioctl (p_env->gen.fd, CDROMREADMODE2, &buf) == -1)
|
||||||
{
|
{
|
||||||
perror ("ioctl()");
|
perror ("ioctl()");
|
||||||
return 1;
|
return 1;
|
||||||
/* exit (EXIT_FAILURE); */
|
/* exit (EXIT_FAILURE); */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case _AM_READ_CD:
|
case _AM_READ_CD:
|
||||||
case _AM_READ_10:
|
case _AM_READ_10:
|
||||||
if (_read_mode2_sectors (p_env, buf, lsn, 1,
|
if (_read_mode2_sectors (p_env, buf, lsn, 1,
|
||||||
(p_env->access_mode == _AM_READ_10)))
|
(p_env->access_mode == _AM_READ_10)))
|
||||||
{
|
{
|
||||||
perror ("ioctl()");
|
perror ("ioctl()");
|
||||||
if (p_env->access_mode == _AM_READ_CD)
|
if (p_env->access_mode == _AM_READ_CD)
|
||||||
{
|
{
|
||||||
cdio_info ("READ_CD failed; switching to READ_10 mode...");
|
cdio_info ("READ_CD failed; switching to READ_10 mode...");
|
||||||
p_env->access_mode = _AM_READ_10;
|
p_env->access_mode = _AM_READ_10;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
|
cdio_info ("READ_10 failed; switching to ioctl(CDROMREADMODE2) mode...");
|
||||||
p_env->access_mode = _AM_IOCTL;
|
p_env->access_mode = _AM_IOCTL;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1120,7 +1120,7 @@ _read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, uint32_t i_blocks)
|
bool b_form2, uint32_t i_blocks)
|
||||||
{
|
{
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -1130,8 +1130,8 @@ _read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
for (i = 0; i < i_blocks; i++) {
|
for (i = 0; i < i_blocks; i++) {
|
||||||
int retval;
|
int retval;
|
||||||
if ( (retval = _read_mode2_sector_linux (p_env,
|
if ( (retval = _read_mode2_sector_linux (p_env,
|
||||||
((char *)data) + (i_blocksize*i),
|
((char *)data) + (i_blocksize*i),
|
||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return DRIVER_OP_SUCCESS;
|
return DRIVER_OP_SUCCESS;
|
||||||
@@ -1177,7 +1177,7 @@ read_toc_linux (void *p_user_data)
|
|||||||
struct cdrom_msf0 *msf= &env->tocent[i-1].cdte_addr.msf;
|
struct cdrom_msf0 *msf= &env->tocent[i-1].cdte_addr.msf;
|
||||||
|
|
||||||
fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
|
fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
|
||||||
i, msf->minute, msf->second, msf->frame);
|
i, msf->minute, msf->second, msf->frame);
|
||||||
****/
|
****/
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1187,9 +1187,9 @@ read_toc_linux (void *p_user_data)
|
|||||||
p_env->tocent[p_env->gen.i_tracks].cdte_format = CDROM_MSF;
|
p_env->tocent[p_env->gen.i_tracks].cdte_format = CDROM_MSF;
|
||||||
|
|
||||||
if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
|
if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
|
||||||
&p_env->tocent[p_env->gen.i_tracks]) == -1 ) {
|
&p_env->tocent[p_env->gen.i_tracks]) == -1 ) {
|
||||||
cdio_warn("%s: %s\n",
|
cdio_warn("%s: %s\n",
|
||||||
"error in ioctl CDROMREADTOCENTRY for lead-out",
|
"error in ioctl CDROMREADTOCENTRY for lead-out",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1198,7 +1198,7 @@ read_toc_linux (void *p_user_data)
|
|||||||
struct cdrom_msf0 *msf= &env->tocent[p_env->gen.i_tracks].cdte_addr.msf;
|
struct cdrom_msf0 *msf= &env->tocent[p_env->gen.i_tracks].cdte_addr.msf;
|
||||||
|
|
||||||
fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
|
fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n",
|
||||||
i, msf->minute, msf->second, msf->frame);
|
i, msf->minute, msf->second, msf->frame);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
p_env->gen.toc_init = true;
|
p_env->gen.toc_init = true;
|
||||||
@@ -1208,14 +1208,14 @@ read_toc_linux (void *p_user_data)
|
|||||||
/*!
|
/*!
|
||||||
Run a SCSI MMC command.
|
Run a SCSI MMC command.
|
||||||
|
|
||||||
cdio CD structure set by cdio_open().
|
cdio CD structure set by cdio_open().
|
||||||
i_timeout time in milliseconds we will wait for the command
|
i_timeout time in milliseconds we will wait for the command
|
||||||
to complete. If this value is -1, use the default
|
to complete. If this value is -1, use the default
|
||||||
time-out value.
|
time-out value.
|
||||||
p_buf Buffer for data, both sending and receiving
|
p_buf Buffer for data, both sending and receiving
|
||||||
i_buf Size of buffer
|
i_buf Size of buffer
|
||||||
e_direction direction the transfer is to go.
|
e_direction direction the transfer is to go.
|
||||||
cdb CDB bytes. All values that are needed should be set on
|
cdb CDB bytes. All values that are needed should be set on
|
||||||
input. We'll figure out what the right CDB length should be.
|
input. We'll figure out what the right CDB length should be.
|
||||||
|
|
||||||
We return true if command completed successfully and false if not.
|
We return true if command completed successfully and false if not.
|
||||||
@@ -1259,11 +1259,12 @@ run_mmc_cmd_linux( void *p_user_data,
|
|||||||
return DRIVER_OP_ERROR;
|
return DRIVER_OP_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} else if (i_rc < -1)
|
||||||
return DRIVER_OP_ERROR;
|
return DRIVER_OP_ERROR;
|
||||||
|
else
|
||||||
|
/*Not sure if this the best thing, but we'll use anyway. */
|
||||||
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
/*Not sure if this the best thing, but we'll use anyway. */
|
|
||||||
return DRIVER_OP_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -1413,7 +1414,7 @@ cdio_get_devices_linux (void)
|
|||||||
if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
|
if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
|
||||||
continue;
|
continue;
|
||||||
if ( (is_cdrom_linux(drive, NULL)) > 0 ) {
|
if ( (is_cdrom_linux(drive, NULL)) > 0 ) {
|
||||||
cdio_add_device_list(&drives, drive, &num_drives);
|
cdio_add_device_list(&drives, drive, &num_drives);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1463,7 +1464,7 @@ cdio_get_default_device_linux(void)
|
|||||||
if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
|
if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
|
||||||
continue;
|
continue;
|
||||||
if ( is_cdrom_linux(drive, NULL) > 0 ) {
|
if ( is_cdrom_linux(drive, NULL) > 0 ) {
|
||||||
return(strdup(drive));
|
return(strdup(drive));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1490,13 +1491,13 @@ close_tray_linux (const char *psz_device)
|
|||||||
switch(status) {
|
switch(status) {
|
||||||
case CDS_TRAY_OPEN:
|
case CDS_TRAY_OPEN:
|
||||||
goto try_anyway;
|
goto try_anyway;
|
||||||
break;
|
break;
|
||||||
case CDS_DISC_OK:
|
case CDS_DISC_OK:
|
||||||
cdio_info ("Tray already closed.");
|
cdio_info ("Tray already closed.");
|
||||||
i_rc = DRIVER_OP_SUCCESS;
|
i_rc = DRIVER_OP_SUCCESS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cdio_info ("Unknown CD-ROM status (%d), trying anyway", status);
|
cdio_info ("Unknown CD-ROM status (%d), trying anyway", status);
|
||||||
goto try_anyway;
|
goto try_anyway;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ typedef struct {
|
|||||||
} _img_private_t;
|
} _img_private_t;
|
||||||
|
|
||||||
static track_format_t get_track_format_solaris(void *p_user_data,
|
static track_format_t get_track_format_solaris(void *p_user_data,
|
||||||
track_t i_track);
|
track_t i_track);
|
||||||
|
|
||||||
static access_mode_t
|
static access_mode_t
|
||||||
str_to_access_mode_solaris(const char *psz_access_mode)
|
str_to_access_mode_solaris(const char *psz_access_mode)
|
||||||
@@ -111,7 +111,7 @@ str_to_access_mode_solaris(const char *psz_access_mode)
|
|||||||
return _AM_SUN_CTRL_SCSI;
|
return _AM_SUN_CTRL_SCSI;
|
||||||
else {
|
else {
|
||||||
cdio_warn ("unknown access type: %s. Default SCSI used.",
|
cdio_warn ("unknown access type: %s. Default SCSI used.",
|
||||||
psz_access_mode);
|
psz_access_mode);
|
||||||
return default_access_mode;
|
return default_access_mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,7 +137,7 @@ audio_pause_solaris (void *p_user_data)
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
audio_play_msf_solaris (void *p_user_data, msf_t *p_start_msf,
|
audio_play_msf_solaris (void *p_user_data, msf_t *p_start_msf,
|
||||||
msf_t *p_end_msf)
|
msf_t *p_end_msf)
|
||||||
{
|
{
|
||||||
|
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
@@ -161,7 +161,7 @@ audio_play_msf_solaris (void *p_user_data, msf_t *p_start_msf,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
audio_play_track_index_solaris (void *p_user_data,
|
audio_play_track_index_solaris (void *p_user_data,
|
||||||
cdio_track_index_t *p_track_index)
|
cdio_track_index_t *p_track_index)
|
||||||
{
|
{
|
||||||
|
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
@@ -176,7 +176,7 @@ audio_play_track_index_solaris (void *p_user_data,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
audio_read_subchannel_solaris (void *p_user_data,
|
audio_read_subchannel_solaris (void *p_user_data,
|
||||||
cdio_subchannel_t *p_subchannel)
|
cdio_subchannel_t *p_subchannel)
|
||||||
{
|
{
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
struct cdrom_subchnl subchannel;
|
struct cdrom_subchnl subchannel;
|
||||||
@@ -231,7 +231,7 @@ audio_resume_solaris (void *p_user_data)
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
audio_set_volume_solaris (void *p_user_data,
|
audio_set_volume_solaris (void *p_user_data,
|
||||||
cdio_audio_volume_t *p_volume) {
|
cdio_audio_volume_t *p_volume) {
|
||||||
|
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
return ioctl(p_env->gen.fd, CDROMVOLCTRL, p_volume);
|
return ioctl(p_env->gen.fd, CDROMVOLCTRL, p_volume);
|
||||||
@@ -270,17 +270,17 @@ init_solaris (_img_private_t *p_env)
|
|||||||
p_user_data internal CD structure.
|
p_user_data internal CD structure.
|
||||||
i_timeout_ms time in milliseconds we will wait for the command
|
i_timeout_ms time in milliseconds we will wait for the command
|
||||||
to complete.
|
to complete.
|
||||||
i_cdb Size of p_cdb
|
i_cdb Size of p_cdb
|
||||||
p_cdb CDB bytes.
|
p_cdb CDB bytes.
|
||||||
e_direction direction the transfer is to go.
|
e_direction direction the transfer is to go.
|
||||||
i_buf Size of buffer
|
i_buf Size of buffer
|
||||||
p_buf Buffer for data, both sending and receiving
|
p_buf Buffer for data, both sending and receiving
|
||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const mmc_cdb_t *p_cdb,
|
||||||
cdio_mmc_direction_t e_direction,
|
cdio_mmc_direction_t e_direction,
|
||||||
unsigned int i_buf, /*in/out*/ void *p_buf )
|
unsigned int i_buf, /*in/out*/ void *p_buf )
|
||||||
{
|
{
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
struct uscsi_cmd cgc;
|
struct uscsi_cmd cgc;
|
||||||
@@ -316,10 +316,12 @@ run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
|||||||
return DRIVER_OP_ERROR;
|
return DRIVER_OP_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return DRIVER_OP_ERROR;
|
|
||||||
}
|
}
|
||||||
/*Not sure if this the best thing, but we'll use anyway. */
|
else if (i_rc < -1)
|
||||||
return DRIVER_OP_SUCCESS;
|
return DRIVER_OP_ERROR;
|
||||||
|
else
|
||||||
|
/*Not sure if this the best thing, but we'll use anyway. */
|
||||||
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -332,7 +334,7 @@ run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
_read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
_read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
||||||
unsigned int i_blocks)
|
unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
struct cdrom_msf solaris_msf;
|
struct cdrom_msf solaris_msf;
|
||||||
msf_t _msf;
|
msf_t _msf;
|
||||||
@@ -353,7 +355,7 @@ _read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
|||||||
|
|
||||||
if (p_env->gen.ioctls_debugged < 75
|
if (p_env->gen.ioctls_debugged < 75
|
||||||
|| (p_env->gen.ioctls_debugged < (30 * 75)
|
|| (p_env->gen.ioctls_debugged < (30 * 75)
|
||||||
&& p_env->gen.ioctls_debugged % 75 == 0)
|
&& p_env->gen.ioctls_debugged % 75 == 0)
|
||||||
|| p_env->gen.ioctls_debugged % (30 * 75) == 0)
|
|| p_env->gen.ioctls_debugged % (30 * 75) == 0)
|
||||||
cdio_debug ("reading %d", i_lsn);
|
cdio_debug ("reading %d", i_lsn);
|
||||||
|
|
||||||
@@ -361,7 +363,7 @@ _read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
|||||||
|
|
||||||
if (i_blocks > 60) {
|
if (i_blocks > 60) {
|
||||||
cdio_warn("%s:\n",
|
cdio_warn("%s:\n",
|
||||||
"we can't handle reading more than 60 blocks. Reset to 60");
|
"we can't handle reading more than 60 blocks. Reset to 60");
|
||||||
}
|
}
|
||||||
|
|
||||||
cdda.cdda_addr = i_lsn;
|
cdda.cdda_addr = i_lsn;
|
||||||
@@ -384,7 +386,7 @@ _read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode1_sector_solaris (void *p_env, void *data, lsn_t i_lsn,
|
_read_mode1_sector_solaris (void *p_env, void *data, lsn_t i_lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if FIXED
|
#if FIXED
|
||||||
@@ -400,7 +402,7 @@ _read_mode1_sector_solaris (void *p_env, void *data, lsn_t i_lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
_read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -409,8 +411,8 @@ _read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
|||||||
|
|
||||||
for (i = 0; i < i_blocks; i++) {
|
for (i = 0; i < i_blocks; i++) {
|
||||||
if ( (retval = _read_mode1_sector_solaris (p_env,
|
if ( (retval = _read_mode1_sector_solaris (p_env,
|
||||||
((char *)p_data) + (blocksize * i),
|
((char *)p_data) + (blocksize * i),
|
||||||
i_lsn + i, b_form2)) )
|
i_lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return DRIVER_OP_SUCCESS;
|
return DRIVER_OP_SUCCESS;
|
||||||
@@ -421,7 +423,7 @@ _read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
_read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
||||||
struct cdrom_msf solaris_msf;
|
struct cdrom_msf solaris_msf;
|
||||||
@@ -444,11 +446,11 @@ _read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
|||||||
|
|
||||||
if (p_env->gen.ioctls_debugged < 75
|
if (p_env->gen.ioctls_debugged < 75
|
||||||
|| (p_env->gen.ioctls_debugged < (30 * 75)
|
|| (p_env->gen.ioctls_debugged < (30 * 75)
|
||||||
&& p_env->gen.ioctls_debugged % 75 == 0)
|
&& p_env->gen.ioctls_debugged % 75 == 0)
|
||||||
|| p_env->gen.ioctls_debugged % (30 * 75) == 0)
|
|| p_env->gen.ioctls_debugged % (30 * 75) == 0)
|
||||||
cdio_debug ("reading %2.2d:%2.2d:%2.2d",
|
cdio_debug ("reading %2.2d:%2.2d:%2.2d",
|
||||||
solaris_msf.cdmsf_min0, solaris_msf.cdmsf_sec0,
|
solaris_msf.cdmsf_min0, solaris_msf.cdmsf_sec0,
|
||||||
solaris_msf.cdmsf_frame0);
|
solaris_msf.cdmsf_frame0);
|
||||||
|
|
||||||
p_env->gen.ioctls_debugged++;
|
p_env->gen.ioctls_debugged++;
|
||||||
|
|
||||||
@@ -480,7 +482,7 @@ _read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t i_lsn,
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
_read_mode2_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -489,8 +491,8 @@ _read_mode2_sectors_solaris (void *p_user_data, void *data, lsn_t i_lsn,
|
|||||||
|
|
||||||
for (i = 0; i < i_blocks; i++) {
|
for (i = 0; i < i_blocks; i++) {
|
||||||
if ( (retval = _read_mode2_sector_solaris (p_env,
|
if ( (retval = _read_mode2_sector_solaris (p_env,
|
||||||
((char *)data) + (blocksize * i),
|
((char *)data) + (blocksize * i),
|
||||||
i_lsn + i, b_form2)) )
|
i_lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -593,9 +595,9 @@ read_toc_solaris (void *p_user_data)
|
|||||||
p_env->tocent[p_env->tochdr.cdth_trk1].cdte_format = CDIO_CDROM_MSF;
|
p_env->tocent[p_env->tochdr.cdth_trk1].cdte_format = CDIO_CDROM_MSF;
|
||||||
|
|
||||||
if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
|
if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY,
|
||||||
&p_env->tocent[p_env->tochdr.cdth_trk1]) == -1 ) {
|
&p_env->tocent[p_env->tochdr.cdth_trk1]) == -1 ) {
|
||||||
cdio_warn("%s: %s\n",
|
cdio_warn("%s: %s\n",
|
||||||
"error in ioctl CDROMREADTOCENTRY for lead-out",
|
"error in ioctl CDROMREADTOCENTRY for lead-out",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -689,7 +691,7 @@ cdio_get_default_device_solaris(void)
|
|||||||
strcmp(volume_action, "insert") == 0) {
|
strcmp(volume_action, "insert") == 0) {
|
||||||
|
|
||||||
device = calloc(1, strlen(volume_device)
|
device = calloc(1, strlen(volume_device)
|
||||||
+ strlen(volume_name) + 2);
|
+ strlen(volume_name) + 2);
|
||||||
if (device == NULL)
|
if (device == NULL)
|
||||||
return strdup(DEFAULT_CDIO_DEVICE);
|
return strdup(DEFAULT_CDIO_DEVICE);
|
||||||
sprintf(device, "%s/%s", volume_device, volume_name);
|
sprintf(device, "%s/%s", volume_device, volume_name);
|
||||||
@@ -724,7 +726,7 @@ get_discmode_solaris (void *p_user_data)
|
|||||||
/* Get the media info */
|
/* Get the media info */
|
||||||
if((ret = ioctl(p_env->gen.fd, DKIOCGMEDIAINFO, &media)) != 0) {
|
if((ret = ioctl(p_env->gen.fd, DKIOCGMEDIAINFO, &media)) != 0) {
|
||||||
cdio_warn ("DKIOCGMEDIAINFO failed: %s\n", strerror(errno));
|
cdio_warn ("DKIOCGMEDIAINFO failed: %s\n", strerror(errno));
|
||||||
return CDIO_DISC_MODE_NO_INFO;
|
return CDIO_DISC_MODE_NO_INFO;
|
||||||
}
|
}
|
||||||
switch(media.dki_media_type) {
|
switch(media.dki_media_type) {
|
||||||
case DK_CDROM:
|
case DK_CDROM:
|
||||||
@@ -732,13 +734,13 @@ get_discmode_solaris (void *p_user_data)
|
|||||||
case DK_CDRW:
|
case DK_CDRW:
|
||||||
/* Do cdrom detection */
|
/* Do cdrom detection */
|
||||||
break;
|
break;
|
||||||
case DK_DVDROM: return CDIO_DISC_MODE_DVD_ROM;
|
case DK_DVDROM: return CDIO_DISC_MODE_DVD_ROM;
|
||||||
case DK_DVDR: discmode = CDIO_DISC_MODE_DVD_R;
|
case DK_DVDR: discmode = CDIO_DISC_MODE_DVD_R;
|
||||||
break;
|
break;
|
||||||
case DK_DVDRAM: discmode = CDIO_DISC_MODE_DVD_RAM;
|
case DK_DVDRAM: discmode = CDIO_DISC_MODE_DVD_RAM;
|
||||||
break;
|
break;
|
||||||
case DK_DVDRW:
|
case DK_DVDRW:
|
||||||
case DK_DVDRW+1: discmode = CDIO_DISC_MODE_DVD_RW;
|
case DK_DVDRW+1: discmode = CDIO_DISC_MODE_DVD_RW;
|
||||||
break;
|
break;
|
||||||
default: /* no valid match */
|
default: /* no valid match */
|
||||||
return CDIO_DISC_MODE_NO_INFO;
|
return CDIO_DISC_MODE_NO_INFO;
|
||||||
@@ -777,44 +779,44 @@ get_discmode_solaris (void *p_user_data)
|
|||||||
switch(track_fmt) {
|
switch(track_fmt) {
|
||||||
case TRACK_FORMAT_AUDIO:
|
case TRACK_FORMAT_AUDIO:
|
||||||
switch(discmode) {
|
switch(discmode) {
|
||||||
case CDIO_DISC_MODE_NO_INFO:
|
case CDIO_DISC_MODE_NO_INFO:
|
||||||
discmode = CDIO_DISC_MODE_CD_DA;
|
discmode = CDIO_DISC_MODE_CD_DA;
|
||||||
break;
|
break;
|
||||||
case CDIO_DISC_MODE_CD_DA:
|
case CDIO_DISC_MODE_CD_DA:
|
||||||
case CDIO_DISC_MODE_CD_MIXED:
|
case CDIO_DISC_MODE_CD_MIXED:
|
||||||
case CDIO_DISC_MODE_ERROR:
|
case CDIO_DISC_MODE_ERROR:
|
||||||
/* No change*/
|
/* No change*/
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
discmode = CDIO_DISC_MODE_CD_MIXED;
|
discmode = CDIO_DISC_MODE_CD_MIXED;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TRACK_FORMAT_XA:
|
case TRACK_FORMAT_XA:
|
||||||
switch(discmode) {
|
switch(discmode) {
|
||||||
case CDIO_DISC_MODE_NO_INFO:
|
case CDIO_DISC_MODE_NO_INFO:
|
||||||
discmode = CDIO_DISC_MODE_CD_XA;
|
discmode = CDIO_DISC_MODE_CD_XA;
|
||||||
break;
|
break;
|
||||||
case CDIO_DISC_MODE_CD_XA:
|
case CDIO_DISC_MODE_CD_XA:
|
||||||
case CDIO_DISC_MODE_CD_MIXED:
|
case CDIO_DISC_MODE_CD_MIXED:
|
||||||
case CDIO_DISC_MODE_ERROR:
|
case CDIO_DISC_MODE_ERROR:
|
||||||
/* No change*/
|
/* No change*/
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
discmode = CDIO_DISC_MODE_CD_MIXED;
|
discmode = CDIO_DISC_MODE_CD_MIXED;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TRACK_FORMAT_DATA:
|
case TRACK_FORMAT_DATA:
|
||||||
switch(discmode) {
|
switch(discmode) {
|
||||||
case CDIO_DISC_MODE_NO_INFO:
|
case CDIO_DISC_MODE_NO_INFO:
|
||||||
discmode = CDIO_DISC_MODE_CD_DATA;
|
discmode = CDIO_DISC_MODE_CD_DATA;
|
||||||
break;
|
break;
|
||||||
case CDIO_DISC_MODE_CD_DATA:
|
case CDIO_DISC_MODE_CD_DATA:
|
||||||
case CDIO_DISC_MODE_CD_MIXED:
|
case CDIO_DISC_MODE_CD_MIXED:
|
||||||
case CDIO_DISC_MODE_ERROR:
|
case CDIO_DISC_MODE_ERROR:
|
||||||
/* No change*/
|
/* No change*/
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
discmode = CDIO_DISC_MODE_CD_MIXED;
|
discmode = CDIO_DISC_MODE_CD_MIXED;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TRACK_FORMAT_ERROR:
|
case TRACK_FORMAT_ERROR:
|
||||||
@@ -833,7 +835,7 @@ get_discmode_solaris (void *p_user_data)
|
|||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
get_last_session_solaris (void *p_user_data,
|
get_last_session_solaris (void *p_user_data,
|
||||||
/*out*/ lsn_t *i_last_session_lsn)
|
/*out*/ lsn_t *i_last_session_lsn)
|
||||||
{
|
{
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
int i_rc;
|
int i_rc;
|
||||||
@@ -1040,7 +1042,7 @@ cdio_get_devices_solaris (void)
|
|||||||
sprintf(volpath, "%s/s0", globbuf.gl_pathv[i]);
|
sprintf(volpath, "%s/s0", globbuf.gl_pathv[i]);
|
||||||
if(stat(volpath, &st) == 0)
|
if(stat(volpath, &st) == 0)
|
||||||
cdio_add_device_list(&drives, volpath, &i_files);
|
cdio_add_device_list(&drives, volpath, &i_files);
|
||||||
}else
|
}else
|
||||||
cdio_add_device_list(&drives, globbuf.gl_pathv[i], &i_files);
|
cdio_add_device_list(&drives, globbuf.gl_pathv[i], &i_files);
|
||||||
}
|
}
|
||||||
globfree(&globbuf);
|
globfree(&globbuf);
|
||||||
|
|||||||
Reference in New Issue
Block a user