plugin: plugin_list_load_directory() returns PluginList
authorMax Kellermann <max@musicpd.org>
Sat, 14 Sep 2019 11:25:27 +0000 (13:25 +0200)
committerMax Kellermann <max@musicpd.org>
Sat, 14 Sep 2019 11:25:27 +0000 (13:25 +0200)
src/lyrics.cxx
src/plugin.cxx
src/plugin.hxx

index c50f057..d0e6bbc 100644 (file)
@@ -24,7 +24,7 @@ static PluginList empty, plugins;
 
 void lyrics_init()
 {
-       plugin_list_load_directory(&plugins, LYRICS_PLUGIN_DIR);
+       plugins = plugin_list_load_directory(LYRICS_PLUGIN_DIR);
 }
 
 PluginCycle *
index 75c2745..39fda8a 100644 (file)
@@ -156,24 +156,26 @@ ShallSkipDirectoryEntry(const char *name) noexcept
        return name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0));
 }
 
-bool
-plugin_list_load_directory(PluginList *list, const char *path) noexcept
+PluginList
+plugin_list_load_directory(const char *path) noexcept
 {
+       PluginList list;
+
        DIR *dir = opendir(path);
        if (dir == nullptr)
-               return false;
+               return list;
 
        AtScopeExit(dir) { closedir(dir); };
 
        while (const auto *e = readdir(dir)) {
                const char *name = e->d_name;
                if (!ShallSkipDirectoryEntry(name))
-                       register_plugin(list, BuildPath(path, name));
+                       register_plugin(&list, BuildPath(path, name));
        }
 
-       std::sort(list->plugins.begin(), list->plugins.end());
+       std::sort(list.plugins.begin(), list.plugins.end());
 
-       return true;
+       return list;
 }
 
 void
index 1b39a12..8d6fb7a 100644 (file)
@@ -56,8 +56,8 @@ struct PluginCycle;
 /**
  * Load all plugins (executables) in a directory.
  */
-bool
-plugin_list_load_directory(PluginList *list, const char *path) noexcept;
+PluginList
+plugin_list_load_directory(const char *path) noexcept;
 
 /**
  * Run plugins in this list, until one returns success (or until the