filename | src/gdrom/gdi.c |
changeset | 1023:264e2fd90be8 |
prev | 836:d314bf370949 |
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/gdi.c Thu Aug 28 00:08:12 2008 +00001.2 +++ b/src/gdrom/gdi.c Mon Jun 08 04:12:21 2009 +00001.3 @@ -54,7 +54,6 @@1.4 int i;1.5 uint32_t track_count;1.6 gdrom_disc_t disc;1.7 - gdrom_image_t image;1.8 struct stat st;1.9 char line[512];1.10 int session = 0;1.11 @@ -76,15 +75,14 @@1.12 return NULL;1.13 }1.14 dirname = g_path_get_dirname(filename);1.15 - image = (gdrom_image_t)disc;1.16 - image->disc_type = IDE_DISC_GDROM;1.17 - image->track_count = track_count;1.18 + disc->disc_type = IDE_DISC_GDROM;1.19 + disc->track_count = track_count;1.20 for( i=0; i<track_count; i++ ) {1.21 int track_no, start_lba, flags, size, offset;1.22 char filename[256];1.24 if( fgets( line, sizeof(line), f ) == NULL ) {1.25 - gdrom_image_destroy_no_close(disc);1.26 + disc->destroy(disc,FALSE);1.27 return NULL;1.28 }1.29 sscanf( line, "%d %d %d %d %s %d", &track_no, &start_lba, &flags, &size,1.30 @@ -92,47 +90,47 @@1.31 if( start_lba >= 45000 ) {1.32 session = 1;1.33 }1.34 - image->track[i].session = session;1.35 - image->track[i].lba = start_lba + 150; // 2-second offset1.36 - image->track[i].flags = (flags & 0x0F)<<4;1.37 - image->track[i].sector_size = size;1.38 + disc->track[i].session = session;1.39 + disc->track[i].lba = start_lba + 150; // 2-second offset1.40 + disc->track[i].flags = (flags & 0x0F)<<4;1.41 + disc->track[i].sector_size = size;1.42 if( strcasecmp( filename, "none" ) == 0 ) {1.43 - image->track[i].file = NULL;1.44 - image->track[i].sector_count = 0;1.45 - image->track[i].mode = GDROM_MODE1;1.46 + disc->track[i].file = NULL;1.47 + disc->track[i].sector_count = 0;1.48 + disc->track[i].mode = GDROM_MODE1;1.49 } else {1.50 gchar *pathname = g_strdup_printf( "%s%c%s", dirname, G_DIR_SEPARATOR, filename );1.51 - image->track[i].file = fopen( pathname, "ro" );1.52 + disc->track[i].file = fopen( pathname, "ro" );1.53 g_free(pathname);1.54 - if( image->track[i].file == NULL ) {1.55 - gdrom_image_destroy_no_close(disc);1.56 + if( disc->track[i].file == NULL ) {1.57 + disc->destroy(disc,FALSE);1.58 g_free(dirname);1.59 return NULL;1.60 }1.61 - fstat( fileno(image->track[i].file), &st );1.62 - image->track[i].sector_count = st.st_size / size;1.63 - if( image->track[i].flags & TRACK_DATA ) {1.64 + fstat( fileno(disc->track[i].file), &st );1.65 + disc->track[i].sector_count = st.st_size / size;1.66 + if( disc->track[i].flags & TRACK_DATA ) {1.67 /* Data track */1.68 switch(size) {1.69 - case 2048: image->track[i].mode = GDROM_MODE1; break;1.70 - case 2336: image->track[i].mode = GDROM_SEMIRAW_MODE2; break;1.71 - case 2352: image->track[i].mode = GDROM_RAW_XA; break;1.72 + case 2048: disc->track[i].mode = GDROM_MODE1; break;1.73 + case 2336: disc->track[i].mode = GDROM_SEMIRAW_MODE2; break;1.74 + case 2352: disc->track[i].mode = GDROM_RAW_XA; break;1.75 default:1.76 - gdrom_image_destroy_no_close(disc);1.77 + disc->destroy(disc,FALSE);1.78 g_free(dirname);1.79 return NULL;1.80 }1.81 } else {1.82 /* Audio track */1.83 - image->track[i].mode = GDROM_CDDA;1.84 + disc->track[i].mode = GDROM_CDDA;1.85 if( size != 2352 ) {1.86 - gdrom_image_destroy_no_close(disc);1.87 + disc->destroy(disc,FALSE);1.88 g_free(dirname);1.89 return NULL;1.90 }1.91 }1.92 }1.93 - image->track[i].offset = offset;1.94 + disc->track[i].offset = offset;1.95 }1.96 g_free(dirname);1.97 return disc;
.