Works with all burnt media, bought media is different some how. Still better then it was since it didn't work at all.

This commit is contained in:
thesin
2004-06-16 04:51:29 +00:00
parent c287dcad09
commit dc413f1582

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_osx.c,v 1.34 2004/06/14 08:18:57 rocky Exp $ $Id: _cdio_osx.c,v 1.35 2004/06/16 04:51:29 thesin 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.34 2004/06/14 08:18:57 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.35 2004/06/16 04:51:29 thesin Exp $";
#include <cdio/sector.h> #include <cdio/sector.h>
#include <cdio/util.h> #include <cdio/util.h>
@@ -121,7 +121,7 @@ getNumberOfTracks_osx( CDTOC *pTOC, int i_descriptors )
{ {
i_track = pTrackDescriptors[i].point; i_track = pTrackDescriptors[i].point;
if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO ) if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO || i_track == 0xA2 )
continue; continue;
i_tracks++; i_tracks++;
@@ -147,7 +147,7 @@ getFirstTrack_osx( CDTOC *pTOC, int i_descriptors )
{ {
i_track = pTrackDescriptors[i].point; i_track = pTrackDescriptors[i].point;
if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO ) if( i_track > CDIO_CD_MAX_TRACKS || i_track < CDIO_CD_MIN_TRACK_NO || i_track == 0xA2 )
continue; continue;
return ( i_track ); return ( i_track );
} }
@@ -420,8 +420,7 @@ _cdio_read_toc (_img_private_t *env)
env->i_descriptors = CDTOCGetDescriptorCount ( env->pTOC ); env->i_descriptors = CDTOCGetDescriptorCount ( env->pTOC );
env->i_first_track = getFirstTrack_osx(env->pTOC, env->i_descriptors); env->i_first_track = getFirstTrack_osx(env->pTOC, env->i_descriptors);
env->i_last_track = env->i_first_track + env->i_last_track = getNumberOfTracks_osx(env->pTOC, env->i_descriptors);
getNumberOfTracks_osx(env->pTOC, env->i_descriptors);
/* Read in starting sectors */ /* Read in starting sectors */
{ {
@@ -451,7 +450,7 @@ _cdio_read_toc (_img_private_t *env)
if( i_track > CDIO_CD_MAX_TRACKS || i_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--] =
cdio_lsn_to_lba(CDConvertMSFToLBA( pTrackDescriptors[i].p )); cdio_lsn_to_lba(CDConvertMSFToLBA( pTrackDescriptors[i].p ));
} }
@@ -464,7 +463,7 @@ _cdio_read_toc (_img_private_t *env)
} }
/* set leadout sector */ /* set leadout sector */
env->pp_lba[i_tracks] = env->pp_lba[i_leadout] =
cdio_lsn_to_lba(CDConvertMSFToLBA( pTrackDescriptors[i_leadout].p )); cdio_lsn_to_lba(CDConvertMSFToLBA( pTrackDescriptors[i_leadout].p ));
} }
@@ -587,6 +586,8 @@ _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; return env->i_first_track;
} }
@@ -619,6 +620,8 @@ _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( TOTAL_TRACKS );
} }
@@ -700,7 +703,7 @@ _get_track_green_osx(void *user_data, track_t i_track)
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 & CDIO_CDROM_DATA_TRACK) != 0);
} }
} }