aboutsummaryrefslogtreecommitdiff
path: root/miragextract.c
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2020-05-09 19:16:13 -0400
committerB. Watson <yalhcru@gmail.com>2020-05-09 19:16:13 -0400
commit092c409ab70d2c34d87af998d859e2019059131a (patch)
tree61835153e0afa71e750241d3e1b9c1e97cbd938b /miragextract.c
parent8dda4bc4f4fdb5d79af90022d44cd0e568b84899 (diff)
downloadmiragextract-092c409ab70d2c34d87af998d859e2019059131a.tar.gz
autodetect mac .dmg data tracks
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);