forked from len0rd/rockbox
Properties/Tagcache Track Info Retrieval: Skip files with errors
File names exceeding the max length will not be retrievable from the database. Skip such files, instead of cancelling the operation at that point. Change-Id: Ia6bc8a53be9ec181eb836956cc3d8b059b2d024f
This commit is contained in:
parent
f2af0711b0
commit
e3b22935f2
2 changed files with 17 additions and 9 deletions
|
@ -48,6 +48,7 @@ static int props_type = PROPS_FILE;
|
|||
static struct mp3entry id3;
|
||||
#ifdef HAVE_TAGCACHE
|
||||
static int mul_id3_count;
|
||||
static int skipped_count;
|
||||
#endif
|
||||
|
||||
static char str_filename[MAX_PATH];
|
||||
|
@ -374,11 +375,15 @@ static bool determine_file_or_dir(void)
|
|||
#ifdef HAVE_TAGCACHE
|
||||
bool mul_id3_add(const char *file_name)
|
||||
{
|
||||
if (rb->mp3info(&id3, file_name))
|
||||
if (!file_name)
|
||||
skipped_count++;
|
||||
else if (rb->mp3info(&id3, file_name))
|
||||
return false;
|
||||
|
||||
collect_id3(&id3, mul_id3_count == 0);
|
||||
mul_id3_count++;
|
||||
else
|
||||
{
|
||||
collect_id3(&id3, mul_id3_count == 0);
|
||||
mul_id3_count++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -406,12 +411,15 @@ enum plugin_status plugin_start(const void* parameter)
|
|||
if (!rb->strcmp(file, MAKE_ACT_STR(ACTIVITY_DATABASEBROWSER))) /* db table selected */
|
||||
{
|
||||
props_type = PROPS_MUL_ID3;
|
||||
mul_id3_count = 0;
|
||||
mul_id3_count = skipped_count = 0;
|
||||
|
||||
if (!rb->tagtree_subentries_do_action(&mul_id3_add) || mul_id3_count == 0)
|
||||
return PLUGIN_ERROR;
|
||||
else if (mul_id3_count > 1) /* otherwise, the retrieved id3 can be used as-is */
|
||||
finalize_id3(&id3);
|
||||
|
||||
if (skipped_count > 0)
|
||||
rb->splashf(HZ*2, "Skipped %d", skipped_count);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
|
|
@ -2258,7 +2258,8 @@ static bool tagtree_insert_selection(int position, bool queue,
|
|||
|
||||
/* Execute action_cb for all subentries of the current table's
|
||||
* selected item, handing over each entry's filename in the
|
||||
* callback function parameter.
|
||||
* callback function parameter. Parameter will be NULL for
|
||||
* entries whose filename couldn't be retrieved.
|
||||
*/
|
||||
bool tagtree_subentries_do_action(bool (*action_cb)(const char *file_name))
|
||||
{
|
||||
|
@ -2289,9 +2290,8 @@ bool tagtree_subentries_do_action(bool (*action_cb)(const char *file_name))
|
|||
last_tick = current_tick;
|
||||
}
|
||||
|
||||
if (!tagcache_retrieve(&tcs, tagtree_get_entry(tc, i)->extraseek,
|
||||
tcs.type, buf, sizeof buf)
|
||||
|| !action_cb(buf))
|
||||
if (!action_cb(tagcache_retrieve(&tcs, tagtree_get_entry(tc, i)->extraseek,
|
||||
tcs.type, buf, sizeof buf) ? buf : NULL))
|
||||
{
|
||||
ret = false;
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue