aboutsummaryrefslogtreecommitdiff
path: root/miragextract.c
diff options
context:
space:
mode:
Diffstat (limited to 'miragextract.c')
-rw-r--r--miragextract.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/miragextract.c b/miragextract.c
index 8e80529..02325ae 100644
--- a/miragextract.c
+++ b/miragextract.c
@@ -134,8 +134,14 @@ void process_track(int t, int extract) {
break;
}
- if(!(sector = mirage_track_get_sector(track, 0, 0, &gerr)))
+ /* examine first sector, see if it's got Apple magic */
+ sec = mirage_track_get_track_start(track);
+ if(!(sector = mirage_track_get_sector(track, sec, 0, &gerr)))
+ die(NULL);
+ if(!(mirage_sector_get_data(sector, &buf, &len, &gerr)))
die(NULL);
+ if(buf[0] == 'E' && buf[1] == 'R' && buf[3] == 0 && (buf[2] == 0x02 || buf[2] == 0x08))
+ ext = "dmg";
sprintf(outfile, "%s%02d.%s", outfilebase, output_track_number, ext);
@@ -170,7 +176,6 @@ void process_track(int t, int extract) {
}
}
- sec = mirage_track_get_track_start(track);
while((sector = mirage_track_get_sector(track, sec++, 0, NULL))) {
if(!(mirage_sector_get_data(sector, &buf, &len, &gerr)))
die(NULL);