Commit 660e40d0 authored by Max Kellermann's avatar Max Kellermann

update_walk: split update_regular_file()

parent 9f3db5a7
...@@ -465,33 +465,70 @@ update_song_file(struct directory *directory, ...@@ -465,33 +465,70 @@ update_song_file(struct directory *directory,
} }
} }
static void static bool
update_regular_file(struct directory *directory, update_song_file2(struct directory *directory,
const char *name, const struct stat *st) const char *name, const char *suffix,
const struct stat *st)
{ {
const char *suffix = uri_get_suffix(name); const struct decoder_plugin *plugin =
const struct decoder_plugin *plugin; decoder_plugin_from_suffix(suffix, false);
#ifdef ENABLE_ARCHIVE if (plugin == NULL)
const struct archive_plugin *archive; return false;
#endif
if (suffix == NULL)
return;
if ((plugin = decoder_plugin_from_suffix(suffix, false)) != NULL)
{
update_song_file(directory, name, st, plugin); 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 #ifdef ENABLE_ARCHIVE
} else if ((archive = archive_plugin_from_suffix(suffix))) { const struct archive_plugin *plugin =
update_archive_file(directory, name, st, archive); 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 #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;
} else if (playlist_suffix_supported(suffix)) {
db_lock(); db_lock();
if (playlist_vector_update_or_add(&directory->playlists, name, if (playlist_vector_update_or_add(&directory->playlists, name,
st->st_mtime)) st->st_mtime))
modified = true; modified = true;
db_unlock(); 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);
if (suffix == NULL)
return false;
return update_song_file2(directory, name, suffix, st) ||
update_archive_file2(directory, name, suffix, st) ||
update_playlist_file2(directory, name, suffix, st);
} }
static bool static bool
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment