tagcache: Factor ecread of tagfile_entry/index_entry, and ecwrite of index_entry. This should save some binsize and avoid this stupidly repetitive sequence.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25217 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
7430bb02a1
commit
1bff4b32d1
1 changed files with 38 additions and 35 deletions
|
@ -264,6 +264,22 @@ const char* tagcache_tag_to_str(int tag)
|
||||||
return tags_str[tag];
|
return tags_str[tag];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper functions for the two most read/write data structure: tagfile_entry and index_entry */
|
||||||
|
ssize_t ecread_tagfile_entry(int fd, struct tagfile_entry *buf)
|
||||||
|
{
|
||||||
|
return ecread(fd, buf, 1, tagfile_entry_ec, tc_stat.econ);
|
||||||
|
}
|
||||||
|
|
||||||
|
ssize_t ecread_index_entry(int fd, struct index_entry *buf)
|
||||||
|
{
|
||||||
|
return ecread(fd, buf, 1, index_entry_ec, tc_stat.econ);
|
||||||
|
}
|
||||||
|
|
||||||
|
ssize_t ecwrite_index_entry(int fd, struct index_entry *buf)
|
||||||
|
{
|
||||||
|
return ecwrite(fd, buf, 1, index_entry_ec, tc_stat.econ);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DIRCACHE
|
#ifdef HAVE_DIRCACHE
|
||||||
/**
|
/**
|
||||||
* Returns true if specified flag is still present, i.e., dircache
|
* Returns true if specified flag is still present, i.e., dircache
|
||||||
|
@ -448,7 +464,7 @@ static long find_entry_disk(const char *filename, bool localfd)
|
||||||
pos_history[i+1] = pos_history[i];
|
pos_history[i+1] = pos_history[i];
|
||||||
pos_history[0] = pos;
|
pos_history[0] = pos;
|
||||||
|
|
||||||
if (ecread(fd, &tfe, 1, tagfile_entry_ec, tc_stat.econ)
|
if (ecread_tagfile_entry(fd, &tfe)
|
||||||
!= sizeof(struct tagfile_entry))
|
!= sizeof(struct tagfile_entry))
|
||||||
{
|
{
|
||||||
break ;
|
break ;
|
||||||
|
@ -583,7 +599,7 @@ static bool get_index(int masterfd, int idxid,
|
||||||
|
|
||||||
lseek(masterfd, idxid * sizeof(struct index_entry)
|
lseek(masterfd, idxid * sizeof(struct index_entry)
|
||||||
+ sizeof(struct master_header), SEEK_SET);
|
+ sizeof(struct master_header), SEEK_SET);
|
||||||
if (ecread(masterfd, idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(masterfd, idx)
|
||||||
!= sizeof(struct index_entry))
|
!= sizeof(struct index_entry))
|
||||||
{
|
{
|
||||||
logf("read error #3");
|
logf("read error #3");
|
||||||
|
@ -638,8 +654,7 @@ static bool write_index(int masterfd, int idxid, struct index_entry *idx)
|
||||||
|
|
||||||
lseek(masterfd, idxid * sizeof(struct index_entry)
|
lseek(masterfd, idxid * sizeof(struct index_entry)
|
||||||
+ sizeof(struct master_header), SEEK_SET);
|
+ sizeof(struct master_header), SEEK_SET);
|
||||||
if (ecwrite(masterfd, idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecwrite_index_entry(masterfd, idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("write error #3");
|
logf("write error #3");
|
||||||
logf("idxid: %d", idxid);
|
logf("idxid: %d", idxid);
|
||||||
|
@ -717,7 +732,7 @@ static bool retrieve(struct tagcache_search *tcs, struct index_entry *idx,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
lseek(tcs->idxfd[tag], seek, SEEK_SET);
|
lseek(tcs->idxfd[tag], seek, SEEK_SET);
|
||||||
if (ecread(tcs->idxfd[tag], &tfe, 1, tagfile_entry_ec, tc_stat.econ)
|
if (ecread_tagfile_entry(tcs->idxfd[tag], &tfe)
|
||||||
!= sizeof(struct tagfile_entry))
|
!= sizeof(struct tagfile_entry))
|
||||||
{
|
{
|
||||||
logf("read error #5");
|
logf("read error #5");
|
||||||
|
@ -960,7 +975,7 @@ static bool check_clauses(struct tagcache_search *tcs,
|
||||||
{
|
{
|
||||||
int fd = tcs->idxfd[clause[i]->tag];
|
int fd = tcs->idxfd[clause[i]->tag];
|
||||||
lseek(fd, seek, SEEK_SET);
|
lseek(fd, seek, SEEK_SET);
|
||||||
ecread(fd, &tfe, 1, tagfile_entry_ec, tc_stat.econ);
|
ecread_tagfile_entry(fd, &tfe);
|
||||||
if (tfe.tag_length >= (int)sizeof(str))
|
if (tfe.tag_length >= (int)sizeof(str))
|
||||||
{
|
{
|
||||||
logf("Too long tag read!");
|
logf("Too long tag read!");
|
||||||
|
@ -1091,7 +1106,7 @@ static bool build_lookup_list(struct tagcache_search *tcs)
|
||||||
lseek(tcs->masterfd, tcs->seek_pos * sizeof(struct index_entry) +
|
lseek(tcs->masterfd, tcs->seek_pos * sizeof(struct index_entry) +
|
||||||
sizeof(struct master_header), SEEK_SET);
|
sizeof(struct master_header), SEEK_SET);
|
||||||
|
|
||||||
while (ecread(tcs->masterfd, &entry, 1, index_entry_ec, tc_stat.econ)
|
while (ecread_index_entry(tcs->masterfd, &entry)
|
||||||
== sizeof(struct index_entry))
|
== sizeof(struct index_entry))
|
||||||
{
|
{
|
||||||
struct tagcache_seeklist_entry *seeklist;
|
struct tagcache_seeklist_entry *seeklist;
|
||||||
|
@ -1429,8 +1444,7 @@ static bool get_next(struct tagcache_search *tcs)
|
||||||
/* Seek stream to the correct position and continue to direct fetch. */
|
/* Seek stream to the correct position and continue to direct fetch. */
|
||||||
lseek(tcs->idxfd[tcs->type], tcs->position, SEEK_SET);
|
lseek(tcs->idxfd[tcs->type], tcs->position, SEEK_SET);
|
||||||
|
|
||||||
if (ecread(tcs->idxfd[tcs->type], &entry, 1,
|
if (ecread_tagfile_entry(tcs->idxfd[tcs->type], &entry) != sizeof(struct tagfile_entry))
|
||||||
tagfile_entry_ec, tc_stat.econ) != sizeof(struct tagfile_entry))
|
|
||||||
{
|
{
|
||||||
logf("read error #5");
|
logf("read error #5");
|
||||||
tcs->valid = false;
|
tcs->valid = false;
|
||||||
|
@ -2180,7 +2194,7 @@ static bool build_numeric_indices(struct tagcache_header *h, int tmpfd)
|
||||||
for (i = 0; i < tcmh.tch.entry_count; i++)
|
for (i = 0; i < tcmh.tch.entry_count; i++)
|
||||||
{
|
{
|
||||||
/* Read the index entry. */
|
/* Read the index entry. */
|
||||||
if (ecread(masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(masterfd, &idx)
|
||||||
!= sizeof(struct index_entry))
|
!= sizeof(struct index_entry))
|
||||||
{
|
{
|
||||||
logf("read fail #3");
|
logf("read fail #3");
|
||||||
|
@ -2251,8 +2265,7 @@ static bool build_numeric_indices(struct tagcache_header *h, int tmpfd)
|
||||||
idx.flag |= FLAG_RESURRECTED;
|
idx.flag |= FLAG_RESURRECTED;
|
||||||
|
|
||||||
lseek(masterfd, -sizeof(struct index_entry), SEEK_CUR);
|
lseek(masterfd, -sizeof(struct index_entry), SEEK_CUR);
|
||||||
if (ecwrite(masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecwrite_index_entry(masterfd, &idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("masterfd writeback fail #1");
|
logf("masterfd writeback fail #1");
|
||||||
close(masterfd);
|
close(masterfd);
|
||||||
|
@ -2272,8 +2285,7 @@ static bool build_numeric_indices(struct tagcache_header *h, int tmpfd)
|
||||||
{
|
{
|
||||||
int loc = lseek(masterfd, 0, SEEK_CUR);
|
int loc = lseek(masterfd, 0, SEEK_CUR);
|
||||||
|
|
||||||
if (ecread(masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(masterfd, &idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("read fail #3");
|
logf("read fail #3");
|
||||||
close(masterfd);
|
close(masterfd);
|
||||||
|
@ -2302,8 +2314,7 @@ static bool build_numeric_indices(struct tagcache_header *h, int tmpfd)
|
||||||
|
|
||||||
/* Write back the updated index. */
|
/* Write back the updated index. */
|
||||||
lseek(masterfd, loc, SEEK_SET);
|
lseek(masterfd, loc, SEEK_SET);
|
||||||
if (ecwrite(masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecwrite_index_entry(masterfd, &idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("write fail");
|
logf("write fail");
|
||||||
close(masterfd);
|
close(masterfd);
|
||||||
|
@ -2429,8 +2440,7 @@ static int build_index(int index_type, struct tagcache_header *h, int tmpfd)
|
||||||
int loc = lseek(fd, 0, SEEK_CUR);
|
int loc = lseek(fd, 0, SEEK_CUR);
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
if (ecread(fd, &entry, 1, tagfile_entry_ec, tc_stat.econ)
|
if (ecread_tagfile_entry(fd, &entry) != sizeof(struct tagfile_entry))
|
||||||
!= sizeof(struct tagfile_entry))
|
|
||||||
{
|
{
|
||||||
logf("read error #7");
|
logf("read error #7");
|
||||||
close(fd);
|
close(fd);
|
||||||
|
@ -3457,8 +3467,7 @@ bool tagcache_create_changelog(struct tagcache_search *tcs)
|
||||||
|
|
||||||
for (i = 0; i < myhdr.tch.entry_count; i++)
|
for (i = 0; i < myhdr.tch.entry_count; i++)
|
||||||
{
|
{
|
||||||
if (ecread(tcs->masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(tcs->masterfd, &idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("read error #9");
|
logf("read error #9");
|
||||||
tagcache_search_finish(tcs);
|
tagcache_search_finish(tcs);
|
||||||
|
@ -3522,8 +3531,7 @@ static bool delete_entry(long idx_id)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
lseek(masterfd, idx_id * sizeof(struct index_entry), SEEK_CUR);
|
lseek(masterfd, idx_id * sizeof(struct index_entry), SEEK_CUR);
|
||||||
if (ecread(masterfd, &myidx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(masterfd, &myidx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("delete_entry(): read error");
|
logf("delete_entry(): read error");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -3537,8 +3545,7 @@ static bool delete_entry(long idx_id)
|
||||||
|
|
||||||
myidx.flag |= FLAG_DELETED;
|
myidx.flag |= FLAG_DELETED;
|
||||||
lseek(masterfd, -sizeof(struct index_entry), SEEK_CUR);
|
lseek(masterfd, -sizeof(struct index_entry), SEEK_CUR);
|
||||||
if (ecwrite(masterfd, &myidx, 1, index_entry_ec, tc_stat.econ)
|
if (ecwrite_index_entry(masterfd, &myidx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("delete_entry(): write_error #1");
|
logf("delete_entry(): write_error #1");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -3560,8 +3567,7 @@ static bool delete_entry(long idx_id)
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (ecread(masterfd, &idx, 1, index_entry_ec, tc_stat.econ)
|
if (ecread_index_entry(masterfd, &idx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("delete_entry(): read error #2");
|
logf("delete_entry(): read error #2");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -3617,8 +3623,7 @@ static bool delete_entry(long idx_id)
|
||||||
|
|
||||||
/* Skip the header block */
|
/* Skip the header block */
|
||||||
lseek(fd, myidx.tag_seek[tag], SEEK_SET);
|
lseek(fd, myidx.tag_seek[tag], SEEK_SET);
|
||||||
if (ecread(fd, &tfe, 1, tagfile_entry_ec, tc_stat.econ)
|
if (ecread_tagfile_entry(fd, &tfe) != sizeof(struct tagfile_entry))
|
||||||
!= sizeof(struct tagfile_entry))
|
|
||||||
{
|
{
|
||||||
logf("delete_entry(): read error #3");
|
logf("delete_entry(): read error #3");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -3681,8 +3686,7 @@ static bool delete_entry(long idx_id)
|
||||||
/* Write index entry back into master index. */
|
/* Write index entry back into master index. */
|
||||||
lseek(masterfd, sizeof(struct master_header) +
|
lseek(masterfd, sizeof(struct master_header) +
|
||||||
(idx_id * sizeof(struct index_entry)), SEEK_SET);
|
(idx_id * sizeof(struct index_entry)), SEEK_SET);
|
||||||
if (ecwrite(masterfd, &myidx, 1, index_entry_ec, tc_stat.econ)
|
if (ecwrite_index_entry(masterfd, &myidx) != sizeof(struct index_entry))
|
||||||
!= sizeof(struct index_entry))
|
|
||||||
{
|
{
|
||||||
logf("delete_entry(): write_error #2");
|
logf("delete_entry(): write_error #2");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -3872,7 +3876,7 @@ static bool load_tagcache(void)
|
||||||
/* Load the master index table. */
|
/* Load the master index table. */
|
||||||
for (i = 0; i < hdr->h.tch.entry_count; i++)
|
for (i = 0; i < hdr->h.tch.entry_count; i++)
|
||||||
{
|
{
|
||||||
rc = ecread(fd, idx, 1, index_entry_ec, tc_stat.econ);
|
rc = ecread_index_entry(fd, idx);
|
||||||
if (rc != sizeof(struct index_entry))
|
if (rc != sizeof(struct index_entry))
|
||||||
{
|
{
|
||||||
logf("read error #10");
|
logf("read error #10");
|
||||||
|
@ -3929,7 +3933,7 @@ static bool load_tagcache(void)
|
||||||
|
|
||||||
fe = (struct tagfile_entry *)p;
|
fe = (struct tagfile_entry *)p;
|
||||||
pos = lseek(fd, 0, SEEK_CUR);
|
pos = lseek(fd, 0, SEEK_CUR);
|
||||||
rc = ecread(fd, fe, 1, tagfile_entry_ec, tc_stat.econ);
|
rc = ecread_tagfile_entry(fd, fe);
|
||||||
if (rc != sizeof(struct tagfile_entry))
|
if (rc != sizeof(struct tagfile_entry))
|
||||||
{
|
{
|
||||||
/* End of lookup table. */
|
/* End of lookup table. */
|
||||||
|
@ -4076,8 +4080,7 @@ static bool check_deleted_files(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
lseek(fd, sizeof(struct tagcache_header), SEEK_SET);
|
lseek(fd, sizeof(struct tagcache_header), SEEK_SET);
|
||||||
while (ecread(fd, &tfe, 1, tagfile_entry_ec, tc_stat.econ)
|
while (ecread_tagfile_entry(fd, &tfe) == sizeof(struct tagfile_entry)
|
||||||
== sizeof(struct tagfile_entry)
|
|
||||||
#ifndef __PCTOOL__
|
#ifndef __PCTOOL__
|
||||||
&& !check_event_queue()
|
&& !check_event_queue()
|
||||||
#endif
|
#endif
|
||||||
|
@ -4145,7 +4148,7 @@ static bool check_dir(const char *dirname, int add_files)
|
||||||
dir = opendir(dirname);
|
dir = opendir(dirname);
|
||||||
if (!dir)
|
if (!dir)
|
||||||
{
|
{
|
||||||
logf("tagcache: opendir() failed");
|
logf("tagcache: opendir(%s) failed", dirname);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue