summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-13 13:21:55 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-13 13:21:55 +0000
commit113fffaa86ca105694dd4da28fc8685350aba947 (patch)
treef219a657d235d587d7436da80a725dc146c1a0fa
parentf6f3a1395ece444556583139d988657396bf8cb7 (diff)
downloadrockbox-113fffaa86ca105694dd4da28fc8685350aba947.zip
rockbox-113fffaa86ca105694dd4da28fc8685350aba947.tar.gz
rockbox-113fffaa86ca105694dd4da28fc8685350aba947.tar.bz2
rockbox-113fffaa86ca105694dd4da28fc8685350aba947.tar.xz
Don't save settings on disk if it has no partition table
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1712 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c2
-rw-r--r--firmware/drivers/fat.c5
-rw-r--r--firmware/drivers/fat.h1
3 files changed, 7 insertions, 1 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 67530a9..e285d26 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -198,7 +198,7 @@ static int save_config_buffer( void )
/* update the checksum in the end of the block before saving */
calculate_config_checksum(rtc_config_block + sizeof(rtc_config_block) - 2);
#ifdef SAVE_TO_DISK
- if(battery_level_safe())
+ if(battery_level_safe() && (fat_firstsector()!=0))
return !ata_write_sectors( 61, 1, rtc_config_block);
else
return -1;
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c
index 7fe011c..78d0f8f 100644
--- a/firmware/drivers/fat.c
+++ b/firmware/drivers/fat.c
@@ -218,6 +218,11 @@ static int first_sector_of_cluster(int cluster)
return (cluster - 2) * fat_bpb.bpb_secperclus + fat_bpb.firstdatasector;
}
+int fat_startsector(void)
+{
+ return fat_bpb.startsector;
+}
+
int fat_mount(int startsector)
{
unsigned char buf[SECTOR_SIZE];
diff --git a/firmware/drivers/fat.h b/firmware/drivers/fat.h
index 844864d..836d5c6 100644
--- a/firmware/drivers/fat.h
+++ b/firmware/drivers/fat.h
@@ -66,6 +66,7 @@ extern int fat_mount(int startsector);
extern int fat_create_file(unsigned int currdir, char *name);
extern int fat_create_dir(unsigned int currdir, char *name);
#endif
+extern int fat_startsector(void);
extern int fat_open(unsigned int cluster, struct fat_file *ent);
extern int fat_read(struct fat_file *ent, int sectorcount, void* buf );
extern int fat_seek(struct fat_file *ent, int sector );