diff options
author | B. Watson <yalhcru@gmail.com> | 2020-05-09 19:16:13 -0400 |
---|---|---|
committer | B. Watson <yalhcru@gmail.com> | 2020-05-09 19:16:13 -0400 |
commit | 092c409ab70d2c34d87af998d859e2019059131a (patch) | |
tree | 61835153e0afa71e750241d3e1b9c1e97cbd938b /miragextract.c | |
parent | 8dda4bc4f4fdb5d79af90022d44cd0e568b84899 (diff) | |
download | miragextract-092c409ab70d2c34d87af998d859e2019059131a.tar.gz |
autodetect mac .dmg data tracks
Diffstat (limited to 'miragextract.c')
-rw-r--r-- | miragextract.c | 9 |
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); |