summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-06-20 20:12:35 +0000
committerThomas Martitz <kugel@rockbox.org>2011-06-20 20:12:35 +0000
commit0b9c57d33e59a26b1f341632b990aff0dffd0fcb (patch)
treee19cf12186567cef7f6b564cb6488b0f2924cf7e
parent52abbb186d62f113eb468754332840d54bd7e756 (diff)
downloadrockbox-0b9c57d33e59a26b1f341632b990aff0dffd0fcb.zip
rockbox-0b9c57d33e59a26b1f341632b990aff0dffd0fcb.tar.gz
rockbox-0b9c57d33e59a26b1f341632b990aff0dffd0fcb.tar.bz2
rockbox-0b9c57d33e59a26b1f341632b990aff0dffd0fcb.tar.xz
Dircache: Move struct maindata declaration to dircache.c and actually check for DIRCACHE_MAGIC when loading from disk.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30037 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/common/dircache.c13
-rw-r--r--firmware/include/dircache.h10
2 files changed, 12 insertions, 11 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c
index 56c408e..0f3c453 100644
--- a/firmware/common/dircache.c
+++ b/firmware/common/dircache.c
@@ -503,6 +503,17 @@ static struct dircache_entry* dircache_get_entry(const char *path, bool go_down)
}
#ifdef HAVE_EEPROM_SETTINGS
+
+#define DIRCACHE_MAGIC 0x00d0c0a1
+struct dircache_maindata {
+ long magic;
+ long size;
+ long entry_count;
+ long appflags;
+ struct dircache_entry *root_entry;
+ char *d_names_start;
+};
+
/**
* Function to load the internal cache structure from disk to initialize
* the dircache really fast and little disk access.
@@ -525,7 +536,7 @@ int dircache_load(void)
bytes_read = read(fd, &maindata, sizeof(struct dircache_maindata));
if (bytes_read != sizeof(struct dircache_maindata)
- || maindata.size <= 0)
+ || maindata.magic != DIRCACHE_MAGIC || maindata.size <= 0)
{
logf("Dircache file header error");
close(fd);
diff --git a/firmware/include/dircache.h b/firmware/include/dircache.h
index d04c176..908165c 100644
--- a/firmware/include/dircache.h
+++ b/firmware/include/dircache.h
@@ -47,16 +47,6 @@ struct travel_data {
int pathpos;
};
-#define DIRCACHE_MAGIC 0x00d0c0a1
-struct dircache_maindata {
- long magic;
- long size;
- long entry_count;
- long appflags;
- struct dircache_entry *root_entry;
- char *d_names_start;
-};
-
#define MAX_PENDING_BINDINGS 2
struct fdbind_queue {
char path[MAX_PATH];