update_walk: split update_regular_file()

This commit is contained in:
Max Kellermann 2012-06-13 21:33:23 +02:00
parent 9f3db5a70b
commit 660e40d07e
1 changed files with 58 additions and 21 deletions

View File

@ -465,33 +465,70 @@ update_song_file(struct directory *directory,
}
}
static void
static bool
update_song_file2(struct directory *directory,
const char *name, const char *suffix,
const struct stat *st)
{
const struct decoder_plugin *plugin =
decoder_plugin_from_suffix(suffix, false);
if (plugin == NULL)
return false;
update_song_file(directory, name, st, plugin);
return true;
}
static bool
update_archive_file2(struct directory *directory,
const char *name, const char *suffix,
const struct stat *st)
{
#ifdef ENABLE_ARCHIVE
const struct archive_plugin *plugin =
archive_plugin_from_suffix(suffix);
if (plugin == NULL)
return false;
update_archive_file(directory, name, st, plugin);
return true;
#else
(void)directory;
(void)name;
(void)suffix;
(void)st;
return false;
#endif
}
static bool
update_playlist_file2(struct directory *directory,
const char *name, const char *suffix,
const struct stat *st)
{
if (!playlist_suffix_supported(suffix))
return false;
db_lock();
if (playlist_vector_update_or_add(&directory->playlists, name,
st->st_mtime))
modified = true;
db_unlock();
return true;
}
static bool
update_regular_file(struct directory *directory,
const char *name, const struct stat *st)
{
const char *suffix = uri_get_suffix(name);
const struct decoder_plugin *plugin;
#ifdef ENABLE_ARCHIVE
const struct archive_plugin *archive;
#endif
if (suffix == NULL)
return;
return false;
if ((plugin = decoder_plugin_from_suffix(suffix, false)) != NULL)
{
update_song_file(directory, name, st, plugin);
#ifdef ENABLE_ARCHIVE
} else if ((archive = archive_plugin_from_suffix(suffix))) {
update_archive_file(directory, name, st, archive);
#endif
} else if (playlist_suffix_supported(suffix)) {
db_lock();
if (playlist_vector_update_or_add(&directory->playlists, name,
st->st_mtime))
modified = true;
db_unlock();
}
return update_song_file2(directory, name, suffix, st) ||
update_archive_file2(directory, name, suffix, st) ||
update_playlist_file2(directory, name, suffix, st);
}
static bool