filename | src/gdrom/cdi.c |
changeset | 1023:264e2fd90be8 |
prev | 999:3d19e3597d9b |
next | 1030:864417a57662 |
author | nkeynes |
date | Mon Jun 08 04:12:21 2009 +0000 (14 years ago) |
permissions | -rw-r--r-- |
last change | General cleanup of the GD-rom subsystem - merge gdrom_image_t and gdrom_disc_t - Abstract MMC devices using a lower-level scsi transport - OSX: only look at the whole disc device, and ignore partitions |
file | annotate | diff | log | raw |
1.1 --- a/src/gdrom/cdi.c Tue Mar 24 11:35:20 2009 +00001.2 +++ b/src/gdrom/cdi.c Mon Jun 08 04:12:21 2009 +00001.3 @@ -76,7 +76,6 @@1.4 gdrom_disc_t cdi_image_open( const gchar *filename, FILE *f )1.5 {1.6 gdrom_disc_t disc = NULL;1.7 - gdrom_image_t image;1.8 int i,j;1.9 uint16_t session_count;1.10 uint16_t track_count;1.11 @@ -110,13 +109,12 @@1.12 ERROR("Unable to allocate memory!");1.13 return NULL;1.14 }1.15 - image = (gdrom_image_t)disc;1.17 for( i=0; i< session_count; i++ ) {1.18 fread( &track_count, sizeof(track_count), 1, f );1.19 if( track_count + total_tracks > 99 ) {1.20 ERROR( "Invalid number of tracks, bad cdi image\n" );1.21 - gdrom_image_destroy_no_close(disc);1.22 + disc->destroy(disc,FALSE);1.23 return NULL;1.24 }1.25 for( j=0; j<track_count; j++ ) {1.26 @@ -130,7 +128,7 @@1.27 fread( marker, 20, 1, f );1.28 if( memcmp( marker, TRACK_START_MARKER, 20) != 0 ) {1.29 ERROR( "Track start marker not found, error reading cdi image\n" );1.30 - gdrom_image_destroy_no_close(disc);1.31 + disc->destroy(disc,FALSE);1.32 return NULL;1.33 }1.34 fseek( f, 4, SEEK_CUR );1.35 @@ -144,56 +142,56 @@1.36 fseek( f, 2, SEEK_CUR );1.37 }1.38 fread( &trk, sizeof(trk), 1, f );1.39 - image->track[total_tracks].session = i;1.40 - image->track[total_tracks].lba = trk.start_lba + 150;1.41 - image->track[total_tracks].sector_count = trk.length;1.42 + disc->track[total_tracks].session = i;1.43 + disc->track[total_tracks].lba = trk.start_lba + 150;1.44 + disc->track[total_tracks].sector_count = trk.length;1.45 switch( trk.mode ) {1.46 case 0:1.47 - image->track[total_tracks].mode = GDROM_CDDA;1.48 - image->track[total_tracks].sector_size = 2352;1.49 - image->track[total_tracks].flags = 0x01;1.50 + disc->track[total_tracks].mode = GDROM_CDDA;1.51 + disc->track[total_tracks].sector_size = 2352;1.52 + disc->track[total_tracks].flags = 0x01;1.53 if( trk.sector_size != 2 ) {1.54 ERROR( "Invalid combination of mode %d with size %d", trk.mode, trk.sector_size );1.55 - gdrom_image_destroy_no_close(disc);1.56 + disc->destroy(disc,FALSE);1.57 return NULL;1.58 }1.59 break;1.60 case 1:1.61 - image->track[total_tracks].mode = GDROM_MODE1;1.62 - image->track[total_tracks].sector_size = 2048;1.63 - image->track[total_tracks].flags = 0x41;1.64 + disc->track[total_tracks].mode = GDROM_MODE1;1.65 + disc->track[total_tracks].sector_size = 2048;1.66 + disc->track[total_tracks].flags = 0x41;1.67 if( trk.sector_size != 0 ) {1.68 ERROR( "Invalid combination of mode %d with size %d", trk.mode, trk.sector_size );1.69 - gdrom_image_destroy_no_close(disc);1.70 + disc->destroy(disc,FALSE);1.71 return NULL;1.72 }1.73 break;1.74 case 2:1.75 - image->track[total_tracks].flags = 0x41;1.76 + disc->track[total_tracks].flags = 0x41;1.77 switch( trk.sector_size ) {1.78 case 0:1.79 - image->track[total_tracks].mode = GDROM_MODE2_FORM1;1.80 - image->track[total_tracks].sector_size = 2048;1.81 + disc->track[total_tracks].mode = GDROM_MODE2_FORM1;1.82 + disc->track[total_tracks].sector_size = 2048;1.83 break;1.84 case 1:1.85 - image->track[total_tracks].mode = GDROM_SEMIRAW_MODE2;1.86 - image->track[total_tracks].sector_size = 2336;1.87 + disc->track[total_tracks].mode = GDROM_SEMIRAW_MODE2;1.88 + disc->track[total_tracks].sector_size = 2336;1.89 break;1.90 case 2:1.91 default:1.92 ERROR( "Invalid combination of mode %d with size %d", trk.mode, trk.sector_size );1.93 - gdrom_image_destroy_no_close(disc);1.94 + disc->destroy(disc,FALSE);1.95 return NULL;1.96 }1.97 break;1.98 default:1.99 ERROR( "Unsupported track mode %d", trk.mode );1.100 - gdrom_image_destroy_no_close(disc);1.101 + disc->destroy(disc,FALSE);1.102 return NULL;1.103 }1.104 - image->track[total_tracks].offset = posn +1.105 - trk.pregap_length * image->track[total_tracks].sector_size ;1.106 - posn += trk.total_length * image->track[total_tracks].sector_size;1.107 + disc->track[total_tracks].offset = posn +1.108 + trk.pregap_length * disc->track[total_tracks].sector_size ;1.109 + posn += trk.total_length * disc->track[total_tracks].sector_size;1.110 total_tracks++;1.111 fread( marker, 1, 9, f );1.112 if( memcmp( marker, EXT_MARKER, 9 ) == 0 ) {1.113 @@ -204,6 +202,6 @@1.114 }1.115 fseek( f, 12, SEEK_CUR );1.116 }1.117 - image->track_count = total_tracks;1.118 + disc->track_count = total_tracks;1.119 return disc;1.120 }
.