1
0
Fork 0
forked from len0rd/rockbox

Let sansa_list_images() return the number of mi4 images found.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18074 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2008-07-16 18:46:37 +00:00
parent c025bfc086
commit 08a27c1df7
2 changed files with 10 additions and 4 deletions

View file

@ -800,28 +800,34 @@ int sansa_delete_bootloader(struct sansa_t* sansa)
return 0; return 0;
} }
void sansa_list_images(struct sansa_t* sansa) /** List number of MI4 images on the player, return number.
*/
int sansa_list_images(struct sansa_t* sansa)
{ {
struct mi4header_t mi4header; struct mi4header_t mi4header;
loff_t ppmi_length; loff_t ppmi_length;
int num = 0;
/* Check Main firmware header */ /* Check Main firmware header */
if (sansa_seek_and_read(sansa, sansa->start+PPMI_OFFSET, sansa_sectorbuf, 0x200) < 0) { if (sansa_seek_and_read(sansa, sansa->start+PPMI_OFFSET, sansa_sectorbuf, 0x200) < 0) {
return; return 0;
} }
ppmi_length = le2int(sansa_sectorbuf+4); ppmi_length = le2int(sansa_sectorbuf+4);
printf("[INFO] Image 1 - %llu bytes\n",ppmi_length); printf("[INFO] Image 1 - %llu bytes\n",ppmi_length);
num = 1;
/* Look for an original firmware after the first image */ /* Look for an original firmware after the first image */
if (sansa_seek_and_read(sansa, sansa->start + PPMI_OFFSET + 0x200 + ppmi_length, sansa_sectorbuf, 512) < 0) { if (sansa_seek_and_read(sansa, sansa->start + PPMI_OFFSET + 0x200 + ppmi_length, sansa_sectorbuf, 512) < 0) {
return; return 0;
} }
if (get_mi4header(sansa_sectorbuf,&mi4header)==0) { if (get_mi4header(sansa_sectorbuf,&mi4header)==0) {
printf("[INFO] Image 2 - %d bytes\n",mi4header.mi4size); printf("[INFO] Image 2 - %d bytes\n",mi4header.mi4size);
num = 2;
} }
return num;
} }
int sansa_update_of(struct sansa_t* sansa, const char* filename) int sansa_update_of(struct sansa_t* sansa, const char* filename)

View file

@ -45,7 +45,7 @@ int sansa_add_bootloader(struct sansa_t* sansa, const char* filename, int type);
int sansa_delete_bootloader(struct sansa_t* sansa); int sansa_delete_bootloader(struct sansa_t* sansa);
int sansa_update_of(struct sansa_t* sansa,const char* filename); int sansa_update_of(struct sansa_t* sansa,const char* filename);
int sansa_update_ppbl(struct sansa_t* sansa,const char* filename); int sansa_update_ppbl(struct sansa_t* sansa,const char* filename);
void sansa_list_images(struct sansa_t* sansa); int sansa_list_images(struct sansa_t* sansa);
#ifdef __cplusplus #ifdef __cplusplus
} }