+ BT_OBJECT_PUT_REF_AND_RESET(*plugin_set_out);
+ } else {
+ BT_ASSERT(*plugin_set_out);
+
+ if ((*plugin_set_out)->plugins->len > 0) {
+ BT_LOGI("Found plugins in standard directories and built-in plugins: "
+ "count=%u", (*plugin_set_out)->plugins->len);
+ status = BT_FUNC_STATUS_OK;
+ } else {
+ BT_LOGI_STR("No plugins found in standard directories and built-in plugins.");
+ status = BT_FUNC_STATUS_NOT_FOUND;
+ BT_OBJECT_PUT_REF_AND_RESET(*plugin_set_out);
+ }
+ }
+
+ return status;
+}
+
+enum bt_plugin_find_status bt_plugin_find(const char *plugin_name,
+ bt_bool find_in_std_env_var, bt_bool find_in_user_dir,
+ bt_bool find_in_sys_dir, bt_bool find_in_static,
+ bt_bool fail_on_load_error, const struct bt_plugin **plugin_out)
+{
+ enum bt_plugin_find_status status;
+ const struct bt_plugin_set *plugin_set = NULL;
+ uint64_t i;
+
+ BT_ASSERT_PRE_NON_NULL(plugin_name, "Name");
+ BT_ASSERT_PRE_NON_NULL(plugin_out, "Plugin (output)");
+ BT_LOGI("Finding named plugin in standard directories and built-in plugins: "
+ "name=\"%s\", find-in-std-env-var=%d, find-in-user-dir=%d, "
+ "find-in-sys-dir=%d, find-in-static=%d",
+ plugin_name, find_in_std_env_var, find_in_user_dir,
+ find_in_sys_dir, find_in_static);
+ status = (enum bt_plugin_find_status) bt_plugin_find_all(find_in_std_env_var, find_in_user_dir,
+ find_in_sys_dir, find_in_static, fail_on_load_error,
+ &plugin_set);
+ if (status != BT_FUNC_STATUS_OK) {