diff options
author | Dave Chapman <dave@dchapman.com> | 2007-05-22 19:07:45 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2007-05-22 19:07:45 +0000 |
commit | 4df0c7795407966afb468a941aae1ea695d70cae (patch) | |
tree | 282e9b90f013efed66723d08a2ce6760319e35a2 /rbutil | |
parent | 7d79db2ab22f99dba034fd64af9157eb67aa20e3 (diff) |
Remove the check for ipod-specific magic in the MBR (which caused problems when users repartitioned their ipods and removed that magic) and instead check that the partition layout looks like an ipod.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13469 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/ipodpatcher/ipodpatcher.c | 16 | ||||
-rw-r--r-- | rbutil/ipodpatcher/main.c | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/rbutil/ipodpatcher/ipodpatcher.c b/rbutil/ipodpatcher/ipodpatcher.c index 331c7f0322..2be6d2333c 100644 --- a/rbutil/ipodpatcher/ipodpatcher.c +++ b/rbutil/ipodpatcher/ipodpatcher.c @@ -172,12 +172,6 @@ int read_partinfo(struct ipod_t* ipod, int silent) if ((sectorbuf[510] == 0x55) && (sectorbuf[511] == 0xaa)) { /* DOS partition table */ - if ((memcmp(§orbuf[71],"iPod",4) != 0) && - (memcmp(§orbuf[0x40],"This is your Apple iPod. You probably do not want to boot from it!",66) != 0) ) { - if (!silent) fprintf(stderr,"[ERR] Drive is not an iPod, aborting\n"); - return -1; - } - ipod->macpod = 0; /* parse partitions */ for ( i = 0; i < 4; i++ ) { @@ -259,6 +253,16 @@ int read_partinfo(struct ipod_t* ipod, int silent) return -1; } + /* Check that the partition table looks like an ipod: + 1) Partition 1 is of type 0 (Empty) but isn't empty. + 2) Partition 2 is of type 0xb (winpod) or -1 (macpod) + */ + if ((ipod->pinfo[0].type != 0) || (ipod->pinfo[0].size == 0) || + ((ipod->pinfo[1].type != 0xb) && (ipod->pinfo[1].type != -1))) { + if (!silent) fprintf(stderr,"[ERR] Partition layout is not an ipod\n"); + return -1; + } + ipod->start = ipod->pinfo[0].start*ipod->sector_size; return 0; } diff --git a/rbutil/ipodpatcher/main.c b/rbutil/ipodpatcher/main.c index 6328e2df99..090dcccb84 100644 --- a/rbutil/ipodpatcher/main.c +++ b/rbutil/ipodpatcher/main.c @@ -29,7 +29,7 @@ #include "ipodpatcher.h" #include "ipodio.h" -#define VERSION "0.9 with v1.0 bootloaders" +#define VERSION "0.9svn with v1.0 bootloaders" int verbose = 0; |