More work on removing assumption that first_track is 1.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_linux.c,v 1.50 2004/06/03 08:50:30 rocky Exp $
|
$Id: _cdio_linux.c,v 1.51 2004/06/06 10:50:55 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.50 2004/06/03 08:50:30 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.51 2004/06/06 10:50:55 rocky Exp $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -876,7 +876,7 @@ _get_track_format_linux(void *user_data, track_t i_track)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS || i_track == 0)
|
if (i_track > (TOTAL_TRACKS+FIRST_TRACK_NUM) || i_track < FIRST_TRACK_NUM)
|
||||||
return TRACK_FORMAT_ERROR;
|
return TRACK_FORMAT_ERROR;
|
||||||
|
|
||||||
i_track -= FIRST_TRACK_NUM;
|
i_track -= FIRST_TRACK_NUM;
|
||||||
@@ -909,17 +909,15 @@ _get_track_green_linux(void *user_data, track_t i_track)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->gen.toc_init) _cdio_read_toc (env) ;
|
if (i_track > (TOTAL_TRACKS+FIRST_TRACK_NUM) || i_track < FIRST_TRACK_NUM)
|
||||||
|
|
||||||
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = TOTAL_TRACKS+1;
|
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS+1 || i_track == 0)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
i_track -= FIRST_TRACK_NUM;
|
||||||
|
|
||||||
/* FIXME: Dunno if this is the right way, but it's what
|
/* FIXME: Dunno if this is the right way, but it's what
|
||||||
I was using in cdinfo for a while.
|
I was using in cd-info for a while.
|
||||||
*/
|
*/
|
||||||
return ((env->tocent[i_track-FIRST_TRACK_NUM].cdte_ctrl & 2) != 0);
|
return ((env->tocent[i_track].cdte_ctrl & 2) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -940,7 +938,7 @@ _get_track_msf_linux(void *user_data, track_t i_track, msf_t *msf)
|
|||||||
|
|
||||||
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = TOTAL_TRACKS+1;
|
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = TOTAL_TRACKS+1;
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS+1 || i_track == 0) {
|
if (i_track > (TOTAL_TRACKS+FIRST_TRACK_NUM) || i_track < FIRST_TRACK_NUM) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
struct cdrom_msf0 *msf0= &env->tocent[i_track-FIRST_TRACK_NUM].cdte_addr.msf;
|
struct cdrom_msf0 *msf0= &env->tocent[i_track-FIRST_TRACK_NUM].cdte_addr.msf;
|
||||||
|
|||||||
122
lib/_cdio_osx.c
122
lib/_cdio_osx.c
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_osx.c,v 1.30 2004/06/02 07:40:13 rocky Exp $
|
$Id: _cdio_osx.c,v 1.31 2004/06/06 10:50:55 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
from vcdimager code:
|
from vcdimager code:
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.30 2004/06/02 07:40:13 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.31 2004/06/06 10:50:55 rocky Exp $";
|
||||||
|
|
||||||
#include <cdio/sector.h>
|
#include <cdio/sector.h>
|
||||||
#include <cdio/util.h>
|
#include <cdio/util.h>
|
||||||
@@ -67,8 +67,8 @@ static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.30 2004/06/02 07:40:13 rocky
|
|||||||
#include <IOKit/storage/IOCDMediaBSDClient.h>
|
#include <IOKit/storage/IOCDMediaBSDClient.h>
|
||||||
#include <IOKit/storage/IODVDMediaBSDClient.h>
|
#include <IOKit/storage/IODVDMediaBSDClient.h>
|
||||||
|
|
||||||
|
#define TOTAL_TRACKS (env->i_last_track - env->i_first_track)
|
||||||
|
|
||||||
#define TOTAL_TRACKS (env->num_tracks-1)
|
|
||||||
#define CDROM_CDI_TRACK 0x1
|
#define CDROM_CDI_TRACK 0x1
|
||||||
#define CDROM_XA_TRACK 0x2
|
#define CDROM_XA_TRACK 0x2
|
||||||
|
|
||||||
@@ -88,7 +88,8 @@ typedef struct {
|
|||||||
bool toc_init; /* if true, info below is valid. */
|
bool toc_init; /* if true, info below is valid. */
|
||||||
CDTOC *pTOC;
|
CDTOC *pTOC;
|
||||||
int i_descriptors;
|
int i_descriptors;
|
||||||
track_t num_tracks;
|
track_t i_tracks; /* number of tracks */
|
||||||
|
track_t i_first_track; /* first track */
|
||||||
lsn_t *pp_lba;
|
lsn_t *pp_lba;
|
||||||
|
|
||||||
} _img_private_t;
|
} _img_private_t;
|
||||||
@@ -107,9 +108,9 @@ _free_osx (void *user_data) {
|
|||||||
This is an internal routine and is called once per CD open.
|
This is an internal routine and is called once per CD open.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static track_t
|
static track_t
|
||||||
_cdio_getNumberOfTracks( CDTOC *pTOC, int i_descriptors )
|
getNumberOfTracks_osx( CDTOC *pTOC, int i_descriptors )
|
||||||
{
|
{
|
||||||
track_t track = CDIO_INVALID_TRACK;
|
track_t i_track = CDIO_INVALID_TRACK;
|
||||||
int i;
|
int i;
|
||||||
int i_tracks = 0;
|
int i_tracks = 0;
|
||||||
CDTOCDescriptor *pTrackDescriptors;
|
CDTOCDescriptor *pTrackDescriptors;
|
||||||
@@ -118,9 +119,9 @@ _cdio_getNumberOfTracks( CDTOC *pTOC, int i_descriptors )
|
|||||||
|
|
||||||
for( i = i_descriptors; i >= 0; i-- )
|
for( i = i_descriptors; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
track = pTrackDescriptors[i].point;
|
i_track = pTrackDescriptors[i].point;
|
||||||
|
|
||||||
if( track > CDIO_CD_MAX_TRACKS || track < CDIO_CD_MIN_TRACK_NO )
|
if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
i_tracks++;
|
i_tracks++;
|
||||||
@@ -129,6 +130,30 @@ _cdio_getNumberOfTracks( CDTOC *pTOC, int i_descriptors )
|
|||||||
return( i_tracks );
|
return( i_tracks );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the number of the first track.
|
||||||
|
CDIO_INVALID_TRACK is returned on error.
|
||||||
|
*/
|
||||||
|
static track_t
|
||||||
|
getFirstTrack_osx( CDTOC *pTOC, int i_descriptors )
|
||||||
|
{
|
||||||
|
track_t i_track = CDIO_INVALID_TRACK;
|
||||||
|
int i;
|
||||||
|
CDTOCDescriptor *pTrackDescriptors;
|
||||||
|
|
||||||
|
pTrackDescriptors = pTOC->descriptors;
|
||||||
|
|
||||||
|
for( i = 0; i < i_descriptors; i++ )
|
||||||
|
{
|
||||||
|
i_track = pTrackDescriptors[i].point;
|
||||||
|
|
||||||
|
if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO )
|
||||||
|
continue;
|
||||||
|
return ( i_track );
|
||||||
|
}
|
||||||
|
return CDIO_INVALID_TRACK;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads nblocks of mode2 form2 sectors from cd device into data starting
|
Reads nblocks of mode2 form2 sectors from cd device into data starting
|
||||||
from lsn.
|
from lsn.
|
||||||
@@ -394,16 +419,18 @@ _cdio_read_toc (_img_private_t *env)
|
|||||||
IOObjectRelease( service );
|
IOObjectRelease( service );
|
||||||
|
|
||||||
env->i_descriptors = CDTOCGetDescriptorCount ( env->pTOC );
|
env->i_descriptors = CDTOCGetDescriptorCount ( env->pTOC );
|
||||||
env->num_tracks = _cdio_getNumberOfTracks(env->pTOC, env->i_descriptors);
|
env->i_first_track = getFirstTrack_osx(env->pTOC, env->i_descriptors);
|
||||||
|
env->i_last_track = env->i_first_track +
|
||||||
|
getNumberOfTracks_osx(env->pTOC, env->i_descriptors);
|
||||||
|
|
||||||
/* Read in starting sectors */
|
/* Read in starting sectors */
|
||||||
{
|
{
|
||||||
int i, i_leadout = -1;
|
int i, i_leadout = -1;
|
||||||
CDTOCDescriptor *pTrackDescriptors;
|
CDTOCDescriptor *pTrackDescriptors;
|
||||||
track_t track;
|
track_t i_track;
|
||||||
int i_tracks;
|
int i_tracks;
|
||||||
|
|
||||||
env->pp_lba = malloc( (env->num_tracks + 1) * sizeof(int) );
|
env->pp_lba = malloc( TOTAL_TRACKS * sizeof(int) );
|
||||||
if( env->pp_lba == NULL )
|
if( env->pp_lba == NULL )
|
||||||
{
|
{
|
||||||
cdio_error("Out of memory in allocating track starting LSNs" );
|
cdio_error("Out of memory in allocating track starting LSNs" );
|
||||||
@@ -415,13 +442,13 @@ _cdio_read_toc (_img_private_t *env)
|
|||||||
|
|
||||||
for( i_tracks = 0, i = 0; i <= env->i_descriptors; i++ )
|
for( i_tracks = 0, i = 0; i <= env->i_descriptors; i++ )
|
||||||
{
|
{
|
||||||
track = pTrackDescriptors[i].point;
|
i_track = pTrackDescriptors[i].point;
|
||||||
|
|
||||||
if( track == 0xA2 )
|
if( i_track == 0xA2 )
|
||||||
/* Note leadout should be 0xAA, But OSX seems to use 0xA2. */
|
/* Note leadout should be 0xAA, But OSX seems to use 0xA2. */
|
||||||
i_leadout = i;
|
i_leadout = i;
|
||||||
|
|
||||||
if( track > CDIO_CD_MAX_TRACKS || track < CDIO_CD_MIN_TRACK_NO )
|
if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
env->pp_lba[i_tracks++] =
|
env->pp_lba[i_tracks++] =
|
||||||
@@ -459,14 +486,12 @@ _get_track_lba_osx(void *user_data, track_t i_track)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->toc_init) _cdio_read_toc (env) ;
|
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = env->i_last_track+1;
|
||||||
|
|
||||||
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = TOTAL_TRACKS;
|
if (i_track > env->i_last_track + 1 || i_track < env->i_first_track) {
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS || i_track == 0) {
|
|
||||||
return CDIO_INVALID_LSN;
|
return CDIO_INVALID_LSN;
|
||||||
} else {
|
} else {
|
||||||
return env->pp_lba[i_track];
|
return env->pp_lba[i_track - env->i_first_track];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,26 +585,7 @@ _get_first_track_num_osx(void *user_data)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->toc_init) _cdio_read_toc (env) ;
|
return env->i_first_track;
|
||||||
|
|
||||||
{
|
|
||||||
track_t track = CDIO_INVALID_TRACK;
|
|
||||||
int i;
|
|
||||||
CDTOCDescriptor *pTrackDescriptors;
|
|
||||||
|
|
||||||
pTrackDescriptors = env->pTOC->descriptors;
|
|
||||||
|
|
||||||
for( i = 0; i < env->i_descriptors; i++ )
|
|
||||||
{
|
|
||||||
track = pTrackDescriptors[i].point;
|
|
||||||
|
|
||||||
if( track > CDIO_CD_MAX_TRACKS || track < CDIO_CD_MIN_TRACK_NO )
|
|
||||||
continue;
|
|
||||||
return ( track );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return CDIO_INVALID_TRACK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -611,9 +617,7 @@ _get_num_tracks_osx(void *user_data)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->toc_init) _cdio_read_toc (env) ;
|
return( TOTAL_TRACKS );
|
||||||
|
|
||||||
return( env->num_tracks-1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -626,13 +630,9 @@ _get_track_format_osx(void *user_data, track_t i_track)
|
|||||||
dk_cd_read_track_info_t cd_read;
|
dk_cd_read_track_info_t cd_read;
|
||||||
CDTrackInfo a_track;
|
CDTrackInfo a_track;
|
||||||
|
|
||||||
if (!env->toc_init) _cdio_read_toc (env) ;
|
if (i_track > env->i_last_track || i_track < env->i_first_track)
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS || i_track == 0)
|
|
||||||
return TRACK_FORMAT_ERROR;
|
return TRACK_FORMAT_ERROR;
|
||||||
|
|
||||||
i_track -= 1; /* should be FIRST_TRACK_NUM */
|
|
||||||
|
|
||||||
memset( &cd_read, 0, sizeof(cd_read) );
|
memset( &cd_read, 0, sizeof(cd_read) );
|
||||||
|
|
||||||
cd_read.address = i_track;
|
cd_read.address = i_track;
|
||||||
@@ -644,7 +644,7 @@ _get_track_format_osx(void *user_data, track_t i_track)
|
|||||||
if( ioctl( env->gen.fd, DKIOCCDREADTRACKINFO, &cd_read ) == -1 )
|
if( ioctl( env->gen.fd, DKIOCCDREADTRACKINFO, &cd_read ) == -1 )
|
||||||
{
|
{
|
||||||
cdio_error( "could not read trackinfo for track %d", i_track );
|
cdio_error( "could not read trackinfo for track %d", i_track );
|
||||||
return -1;
|
return TRACK_FORMAT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*cdio_warn( "trackinfo trackMode: %x dataMode: %x", a_track.trackMode, a_track.dataMode );*/
|
/*cdio_warn( "trackinfo trackMode: %x dataMode: %x", a_track.trackMode, a_track.dataMode );*/
|
||||||
@@ -677,14 +677,13 @@ _get_track_green_osx(void *user_data, track_t i_track)
|
|||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
CDTrackInfo a_track;
|
CDTrackInfo a_track;
|
||||||
|
|
||||||
if (!env->toc_init) _cdio_read_toc (env) ;
|
if ( i_track > env->i_last_track || i_track < env->i_first_track )
|
||||||
|
|
||||||
if (i_track == CDIO_CDROM_LEADOUT_TRACK) i_track = TOTAL_TRACKS;
|
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS || i_track == 0)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
else {
|
||||||
|
|
||||||
dk_cd_read_track_info_t cd_read;
|
dk_cd_read_track_info_t cd_read;
|
||||||
|
|
||||||
memset( &cd_read, 0, sizeof(cd_read) );
|
memset( &cd_read, 0, sizeof(cd_read) );
|
||||||
|
|
||||||
cd_read.address = i_track;
|
cd_read.address = i_track;
|
||||||
@@ -693,13 +692,12 @@ _get_track_green_osx(void *user_data, track_t i_track)
|
|||||||
cd_read.buffer = &a_track;
|
cd_read.buffer = &a_track;
|
||||||
cd_read.bufferLength = sizeof(CDTrackInfo);
|
cd_read.bufferLength = sizeof(CDTrackInfo);
|
||||||
|
|
||||||
if( ioctl( env->gen.fd, DKIOCCDREADTRACKINFO, &cd_read ) == -1 )
|
if( ioctl( env->gen.fd, DKIOCCDREADTRACKINFO, &cd_read ) == -1 ) {
|
||||||
{
|
|
||||||
cdio_error( "could not read trackinfo for track %d", i_track );
|
cdio_error( "could not read trackinfo for track %d", i_track );
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((a_track.trackMode & 2) != 0);
|
return ((a_track.trackMode & 2) != 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* HAVE_DARWIN_CDROM */
|
#endif /* HAVE_DARWIN_CDROM */
|
||||||
@@ -724,13 +722,13 @@ cdio_get_devices_osx(void)
|
|||||||
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
|
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
|
||||||
if( kern_result != KERN_SUCCESS )
|
if( kern_result != KERN_SUCCESS )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
classes_to_match = IOServiceMatching( kIOCDMediaClass );
|
classes_to_match = IOServiceMatching( kIOCDMediaClass );
|
||||||
if( classes_to_match == NULL )
|
if( classes_to_match == NULL )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectableKey),
|
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectableKey),
|
||||||
@@ -741,7 +739,7 @@ cdio_get_devices_osx(void)
|
|||||||
&media_iterator );
|
&media_iterator );
|
||||||
if( kern_result != KERN_SUCCESS )
|
if( kern_result != KERN_SUCCESS )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
next_media = IOIteratorNext( media_iterator );
|
next_media = IOIteratorNext( media_iterator );
|
||||||
@@ -806,13 +804,13 @@ cdio_get_default_device_osx(void)
|
|||||||
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
|
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
|
||||||
if( kern_result != KERN_SUCCESS )
|
if( kern_result != KERN_SUCCESS )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
classes_to_match = IOServiceMatching( kIOCDMediaClass );
|
classes_to_match = IOServiceMatching( kIOCDMediaClass );
|
||||||
if( classes_to_match == NULL )
|
if( classes_to_match == NULL )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectableKey),
|
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectableKey),
|
||||||
@@ -823,7 +821,7 @@ cdio_get_default_device_osx(void)
|
|||||||
&media_iterator );
|
&media_iterator );
|
||||||
if( kern_result != KERN_SUCCESS )
|
if( kern_result != KERN_SUCCESS )
|
||||||
{
|
{
|
||||||
return( nil );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
next_media = IOIteratorNext( media_iterator );
|
next_media = IOIteratorNext( media_iterator );
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_sunos.c,v 1.34 2004/06/02 00:43:53 rocky Exp $
|
$Id: _cdio_sunos.c,v 1.35 2004/06/06 10:50:55 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_SOLARIS_CDROM
|
#ifdef HAVE_SOLARIS_CDROM
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.34 2004/06/02 00:43:53 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.35 2004/06/06 10:50:55 rocky Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -638,8 +638,6 @@ _cdio_get_num_tracks(void *user_data)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->gen.toc_init) _cdio_read_toc (env) ;
|
|
||||||
|
|
||||||
return TOTAL_TRACKS;
|
return TOTAL_TRACKS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -651,10 +649,7 @@ _cdio_get_track_format(void *user_data, track_t i_track)
|
|||||||
{
|
{
|
||||||
_img_private_t *env = user_data;
|
_img_private_t *env = user_data;
|
||||||
|
|
||||||
if (!env->gen.init) _cdio_init(env);
|
if ( (i_track > TOTAL_TRACKS+FIRST_TRACK_NUM) || i_track < FIRST_TRACK_NUM)
|
||||||
if (!env->gen.toc_init) _cdio_read_toc (env) ;
|
|
||||||
|
|
||||||
if (i_track > TOTAL_TRACKS || i_track == 0)
|
|
||||||
return TRACK_FORMAT_ERROR;
|
return TRACK_FORMAT_ERROR;
|
||||||
|
|
||||||
i_track -= FIRST_TRACK_NUM;
|
i_track -= FIRST_TRACK_NUM;
|
||||||
@@ -690,13 +685,13 @@ _cdio_get_track_green(void *user_data, track_t track_num)
|
|||||||
if (!env->gen.init) _cdio_init(env);
|
if (!env->gen.init) _cdio_init(env);
|
||||||
if (!env->gen.toc_init) _cdio_read_toc (env) ;
|
if (!env->gen.toc_init) _cdio_read_toc (env) ;
|
||||||
|
|
||||||
if (track_num == CDIO_CDROM_LEADOUT_TRACK) track_num = TOTAL_TRACKS+1;
|
if (track_num > TOTAL_TRACKS+FIRST_TRACK_NUM || track_num < FIRST_TRACK_NUM)
|
||||||
|
|
||||||
if (track_num > TOTAL_TRACKS+1 || track_num == 0)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
i_track -= FIRST_TRACK_NUM;
|
||||||
|
|
||||||
/* FIXME: Dunno if this is the right way, but it's what
|
/* FIXME: Dunno if this is the right way, but it's what
|
||||||
I was using in cdinfo for a while.
|
I was using in cd-info for a while.
|
||||||
*/
|
*/
|
||||||
return ((env->tocent[track_num-1].cdte_ctrl & 2) != 0);
|
return ((env->tocent[track_num-1].cdte_ctrl & 2) != 0);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user