summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2008-07-16 18:46:37 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2008-07-16 18:46:37 +0000
commit08a27c1df7e269766ca0f583047884fa127eb5ec (patch)
treeb02cd34dbc8afd7f1ffcaa3068a6ffc31b254dfb
parentc025bfc086a5d30e71f269c182d3de6f127340c3 (diff)
downloadrockbox-08a27c1df7e269766ca0f583047884fa127eb5ec.tar.gz
rockbox-08a27c1df7e269766ca0f583047884fa127eb5ec.zip
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
-rw-r--r--rbutil/sansapatcher/sansapatcher.c12
-rw-r--r--rbutil/sansapatcher/sansapatcher.h2
2 files changed, 10 insertions, 4 deletions
diff --git a/rbutil/sansapatcher/sansapatcher.c b/rbutil/sansapatcher/sansapatcher.c
index 966cfb7033..845333bd76 100644
--- a/rbutil/sansapatcher/sansapatcher.c
+++ b/rbutil/sansapatcher/sansapatcher.c
@@ -800,28 +800,34 @@ int sansa_delete_bootloader(struct sansa_t* sansa)
800 return 0; 800 return 0;
801} 801}
802 802
803void sansa_list_images(struct sansa_t* sansa) 803/** List number of MI4 images on the player, return number.
804 */
805int sansa_list_images(struct sansa_t* sansa)
804{ 806{
805 struct mi4header_t mi4header; 807 struct mi4header_t mi4header;
806 loff_t ppmi_length; 808 loff_t ppmi_length;
809 int num = 0;
807 810
808 /* Check Main firmware header */ 811 /* Check Main firmware header */
809 if (sansa_seek_and_read(sansa, sansa->start+PPMI_OFFSET, sansa_sectorbuf, 0x200) < 0) { 812 if (sansa_seek_and_read(sansa, sansa->start+PPMI_OFFSET, sansa_sectorbuf, 0x200) < 0) {
810 return; 813 return 0;
811 } 814 }
812 815
813 ppmi_length = le2int(sansa_sectorbuf+4); 816 ppmi_length = le2int(sansa_sectorbuf+4);
814 817
815 printf("[INFO] Image 1 - %llu bytes\n",ppmi_length); 818 printf("[INFO] Image 1 - %llu bytes\n",ppmi_length);
819 num = 1;
816 820
817 /* Look for an original firmware after the first image */ 821 /* Look for an original firmware after the first image */
818 if (sansa_seek_and_read(sansa, sansa->start + PPMI_OFFSET + 0x200 + ppmi_length, sansa_sectorbuf, 512) < 0) { 822 if (sansa_seek_and_read(sansa, sansa->start + PPMI_OFFSET + 0x200 + ppmi_length, sansa_sectorbuf, 512) < 0) {
819 return; 823 return 0;
820 } 824 }
821 825
822 if (get_mi4header(sansa_sectorbuf,&mi4header)==0) { 826 if (get_mi4header(sansa_sectorbuf,&mi4header)==0) {
823 printf("[INFO] Image 2 - %d bytes\n",mi4header.mi4size); 827 printf("[INFO] Image 2 - %d bytes\n",mi4header.mi4size);
828 num = 2;
824 } 829 }
830 return num;
825} 831}
826 832
827int sansa_update_of(struct sansa_t* sansa, const char* filename) 833int sansa_update_of(struct sansa_t* sansa, const char* filename)
diff --git a/rbutil/sansapatcher/sansapatcher.h b/rbutil/sansapatcher/sansapatcher.h
index 170646b1d8..7416e1928b 100644
--- a/rbutil/sansapatcher/sansapatcher.h
+++ b/rbutil/sansapatcher/sansapatcher.h
@@ -45,7 +45,7 @@ int sansa_add_bootloader(struct sansa_t* sansa, const char* filename, int type);
45int sansa_delete_bootloader(struct sansa_t* sansa); 45int sansa_delete_bootloader(struct sansa_t* sansa);
46int sansa_update_of(struct sansa_t* sansa,const char* filename); 46int sansa_update_of(struct sansa_t* sansa,const char* filename);
47int sansa_update_ppbl(struct sansa_t* sansa,const char* filename); 47int sansa_update_ppbl(struct sansa_t* sansa,const char* filename);
48void sansa_list_images(struct sansa_t* sansa); 48int sansa_list_images(struct sansa_t* sansa);
49 49
50#ifdef __cplusplus 50#ifdef __cplusplus
51} 51}