diff options
Diffstat (limited to 'apps/tagcache.c')
-rw-r--r-- | apps/tagcache.c | 57 |
1 files changed, 17 insertions, 40 deletions
diff --git a/apps/tagcache.c b/apps/tagcache.c index 080f4198c3..c5a8dcbae5 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c | |||
@@ -383,8 +383,9 @@ static bool do_timed_yield(void) | |||
383 | #endif | 383 | #endif |
384 | 384 | ||
385 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) | 385 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) |
386 | static long find_entry_ram(const char *filename, | 386 | /* find the ramcache entry corresponding to the file indicated by |
387 | const struct dircache_entry *dc) | 387 | * filename and dc (it's corresponding dircache id). */ |
388 | static long find_entry_ram(const char *filename, int dc) | ||
388 | { | 389 | { |
389 | static long last_pos = 0; | 390 | static long last_pos = 0; |
390 | int i; | 391 | int i; |
@@ -393,10 +394,10 @@ static long find_entry_ram(const char *filename, | |||
393 | if (!tc_stat.ramcache) | 394 | if (!tc_stat.ramcache) |
394 | return -1; | 395 | return -1; |
395 | 396 | ||
396 | if (dc == NULL) | 397 | if (dc < 0) |
397 | dc = dircache_get_entry_ptr(filename); | 398 | dc = dircache_get_entry_id(filename); |
398 | 399 | ||
399 | if (dc == NULL) | 400 | if (dc < 0) |
400 | { | 401 | { |
401 | logf("tagcache: file not found."); | 402 | logf("tagcache: file not found."); |
402 | return -1; | 403 | return -1; |
@@ -411,7 +412,7 @@ static long find_entry_ram(const char *filename, | |||
411 | 412 | ||
412 | for (; i < current_tcmh.tch.entry_count; i++) | 413 | for (; i < current_tcmh.tch.entry_count; i++) |
413 | { | 414 | { |
414 | if (hdr->indices[i].tag_seek[tag_filename] == (long)dc) | 415 | if (hdr->indices[i].tag_seek[tag_filename] == dc) |
415 | { | 416 | { |
416 | last_pos = MAX(0, i - 3); | 417 | last_pos = MAX(0, i - 3); |
417 | return i; | 418 | return i; |
@@ -539,7 +540,7 @@ static int find_index(const char *filename) | |||
539 | 540 | ||
540 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) | 541 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) |
541 | if (tc_stat.ramcache && is_dircache_intact()) | 542 | if (tc_stat.ramcache && is_dircache_intact()) |
542 | idx_id = find_entry_ram(filename, NULL); | 543 | idx_id = find_entry_ram(filename, -1); |
543 | #endif | 544 | #endif |
544 | 545 | ||
545 | if (idx_id < 0) | 546 | if (idx_id < 0) |
@@ -723,8 +724,8 @@ static bool retrieve(struct tagcache_search *tcs, struct index_entry *idx, | |||
723 | if (tag == tag_filename && (idx->flag & FLAG_DIRCACHE) | 724 | if (tag == tag_filename && (idx->flag & FLAG_DIRCACHE) |
724 | && is_dircache_intact()) | 725 | && is_dircache_intact()) |
725 | { | 726 | { |
726 | dircache_copy_path((struct dircache_entry *)seek, | 727 | /* for tag_filename, seek is a dircache index */ |
727 | buf, size); | 728 | dircache_copy_path(seek, buf, size); |
728 | return true; | 729 | return true; |
729 | } | 730 | } |
730 | else | 731 | else |
@@ -1481,8 +1482,7 @@ static bool get_next(struct tagcache_search *tcs) | |||
1481 | if (tcs->type == tag_filename && (flag & FLAG_DIRCACHE) | 1482 | if (tcs->type == tag_filename && (flag & FLAG_DIRCACHE) |
1482 | && is_dircache_intact()) | 1483 | && is_dircache_intact()) |
1483 | { | 1484 | { |
1484 | size_t len = dircache_copy_path((struct dircache_entry *)tcs->position, | 1485 | size_t len = dircache_copy_path(tcs->position, buf, sizeof buf); |
1485 | buf, sizeof buf); | ||
1486 | tcs->result_len = len + 1; | 1486 | tcs->result_len = len + 1; |
1487 | tcs->result = buf; | 1487 | tcs->result = buf; |
1488 | tcs->ramresult = false; | 1488 | tcs->ramresult = false; |
@@ -1599,29 +1599,6 @@ static bool update_master_header(void) | |||
1599 | return true; | 1599 | return true; |
1600 | } | 1600 | } |
1601 | 1601 | ||
1602 | #if 0 | ||
1603 | |||
1604 | void tagcache_modify(struct tagcache_search *tcs, int type, const char *text) | ||
1605 | { | ||
1606 | struct tagentry *entry; | ||
1607 | |||
1608 | if (tcs->type != tag_title) | ||
1609 | return ; | ||
1610 | |||
1611 | /* We will need reserve buffer for this. */ | ||
1612 | if (tcs->ramcache) | ||
1613 | { | ||
1614 | struct tagfile_entry *ep; | ||
1615 | |||
1616 | ep = (struct tagfile_entry *)&hdr->tags[tcs->type][tcs->result_seek]; | ||
1617 | tcs->seek_list[tcs->seek_list_count]; | ||
1618 | } | ||
1619 | |||
1620 | entry = find_entry_ram(); | ||
1621 | |||
1622 | } | ||
1623 | #endif | ||
1624 | |||
1625 | void tagcache_search_finish(struct tagcache_search *tcs) | 1602 | void tagcache_search_finish(struct tagcache_search *tcs) |
1626 | { | 1603 | { |
1627 | int i; | 1604 | int i; |
@@ -1677,7 +1654,7 @@ bool tagcache_fill_tags(struct mp3entry *id3, const char *filename) | |||
1677 | return false; | 1654 | return false; |
1678 | 1655 | ||
1679 | /* Find the corresponding entry in tagcache. */ | 1656 | /* Find the corresponding entry in tagcache. */ |
1680 | idx_id = find_entry_ram(filename, NULL); | 1657 | idx_id = find_entry_ram(filename, -1); |
1681 | if (idx_id < 0) | 1658 | if (idx_id < 0) |
1682 | return false; | 1659 | return false; |
1683 | 1660 | ||
@@ -1761,7 +1738,7 @@ static int check_if_empty(char **tag) | |||
1761 | static void __attribute__ ((noinline)) add_tagcache(char *path, | 1738 | static void __attribute__ ((noinline)) add_tagcache(char *path, |
1762 | unsigned long mtime | 1739 | unsigned long mtime |
1763 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) | 1740 | #if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE) |
1764 | ,const struct dircache_entry *dc | 1741 | ,int dc |
1765 | #endif | 1742 | #endif |
1766 | ) | 1743 | ) |
1767 | { | 1744 | { |
@@ -4017,7 +3994,7 @@ static bool load_tagcache(void) | |||
4017 | if (tag == tag_filename) | 3994 | if (tag == tag_filename) |
4018 | { | 3995 | { |
4019 | # ifdef HAVE_DIRCACHE | 3996 | # ifdef HAVE_DIRCACHE |
4020 | const struct dircache_entry *dc; | 3997 | int dc; |
4021 | # endif | 3998 | # endif |
4022 | 3999 | ||
4023 | // FIXME: This is wrong! | 4000 | // FIXME: This is wrong! |
@@ -4064,8 +4041,8 @@ static bool load_tagcache(void) | |||
4064 | # ifdef HAVE_DIRCACHE | 4041 | # ifdef HAVE_DIRCACHE |
4065 | if (dircache_is_enabled()) | 4042 | if (dircache_is_enabled()) |
4066 | { | 4043 | { |
4067 | dc = dircache_get_entry_ptr(buf); | 4044 | dc = dircache_get_entry_id(buf); |
4068 | if (dc == NULL) | 4045 | if (dc < 0) |
4069 | { | 4046 | { |
4070 | logf("Entry no longer valid."); | 4047 | logf("Entry no longer valid."); |
4071 | logf("-> %s", buf); | 4048 | logf("-> %s", buf); |
@@ -4075,7 +4052,7 @@ static bool load_tagcache(void) | |||
4075 | } | 4052 | } |
4076 | 4053 | ||
4077 | idx->flag |= FLAG_DIRCACHE; | 4054 | idx->flag |= FLAG_DIRCACHE; |
4078 | idx->tag_seek[tag_filename] = (long)dc; | 4055 | idx->tag_seek[tag_filename] = dc; |
4079 | } | 4056 | } |
4080 | else | 4057 | else |
4081 | # endif | 4058 | # endif |