summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-07-23 14:28:12 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-07-23 14:28:12 +0000
commit9161425b08332de7d9f9eb7c5296c3120dcbc294 (patch)
tree8adb80271cc6b302a3437b2b9a07cb5122ac4ae9 /apps
parent29fa15f521aaf5c5f8028190a42438e219a3388e (diff)
downloadrockbox-9161425b08332de7d9f9eb7c5296c3120dcbc294.tar.gz
rockbox-9161425b08332de7d9f9eb7c5296c3120dcbc294.zip
Fixed a bug in tagcache initialization.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10292 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/tagcache.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/apps/tagcache.c b/apps/tagcache.c
index 2c46860c95..01dc09fdc8 100644
--- a/apps/tagcache.c
+++ b/apps/tagcache.c
@@ -215,6 +215,7 @@ static int open_tag_fd(struct tagcache_header *hdr, int tag, bool write)
215{ 215{
216 int fd; 216 int fd;
217 char buf[MAX_PATH]; 217 char buf[MAX_PATH];
218 int rc;
218 219
219 if (tagcache_is_numeric_tag(tag) || tag < 0 || tag >= TAG_COUNT) 220 if (tagcache_is_numeric_tag(tag) || tag < 0 || tag >= TAG_COUNT)
220 return -1; 221 return -1;
@@ -230,8 +231,8 @@ static int open_tag_fd(struct tagcache_header *hdr, int tag, bool write)
230 } 231 }
231 232
232 /* Check the header. */ 233 /* Check the header. */
233 read(fd, hdr, sizeof(struct tagcache_header)); 234 rc = read(fd, hdr, sizeof(struct tagcache_header));
234 if (hdr->magic != TAGCACHE_MAGIC) 235 if (hdr->magic != TAGCACHE_MAGIC || rc != sizeof(struct tagcache_header))
235 { 236 {
236 logf("header error"); 237 logf("header error");
237 stat.ready = false; 238 stat.ready = false;
@@ -700,6 +701,7 @@ static void remove_files(void)
700 char buf[MAX_PATH]; 701 char buf[MAX_PATH];
701 702
702 stat.ready = false; 703 stat.ready = false;
704 stat.ramcache = false;
703 remove(TAGCACHE_FILE_MASTER); 705 remove(TAGCACHE_FILE_MASTER);
704 for (i = 0; i < TAG_COUNT; i++) 706 for (i = 0; i < TAG_COUNT; i++)
705 { 707 {
@@ -715,6 +717,7 @@ static void remove_files(void)
715static int open_master_fd(struct master_header *hdr, bool write) 717static int open_master_fd(struct master_header *hdr, bool write)
716{ 718{
717 int fd; 719 int fd;
720 int rc;
718 721
719 fd = open(TAGCACHE_FILE_MASTER, write ? O_RDWR : O_RDONLY); 722 fd = open(TAGCACHE_FILE_MASTER, write ? O_RDWR : O_RDONLY);
720 if (fd < 0) 723 if (fd < 0)
@@ -725,8 +728,8 @@ static int open_master_fd(struct master_header *hdr, bool write)
725 } 728 }
726 729
727 /* Check the header. */ 730 /* Check the header. */
728 read(fd, hdr, sizeof(struct master_header)); 731 rc = read(fd, hdr, sizeof(struct master_header));
729 if (hdr->tch.magic != TAGCACHE_MAGIC) 732 if (hdr->tch.magic != TAGCACHE_MAGIC || rc != sizeof(struct master_header))
730 { 733 {
731 logf("header error"); 734 logf("header error");
732 stat.ready = false; 735 stat.ready = false;
@@ -1659,6 +1662,7 @@ static int build_index(int index_type, struct tagcache_header *h, int tmpfd)
1659 * Creating new index file to store the tags. No need to preload 1662 * Creating new index file to store the tags. No need to preload
1660 * anything whether the index type is sorted or not. 1663 * anything whether the index type is sorted or not.
1661 */ 1664 */
1665 snprintf(buf, sizeof buf, TAGCACHE_FILE_INDEX, index_type);
1662 fd = open(buf, O_WRONLY | O_CREAT | O_TRUNC); 1666 fd = open(buf, O_WRONLY | O_CREAT | O_TRUNC);
1663 if (fd < 0) 1667 if (fd < 0)
1664 { 1668 {