Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/wayland_dynload/intern/wayland_dynload_utils.c')
-rw-r--r--intern/wayland_dynload/intern/wayland_dynload_utils.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/intern/wayland_dynload/intern/wayland_dynload_utils.c b/intern/wayland_dynload/intern/wayland_dynload_utils.c
new file mode 100644
index 00000000000..743dac14eec
--- /dev/null
+++ b/intern/wayland_dynload/intern/wayland_dynload_utils.c
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+/** \file
+ * \ingroup intern_wayland_dynload
+ */
+
+#include <stdio.h>
+
+#include "wayland_dynload_utils.h"
+
+DynamicLibrary dynamic_library_open_array_with_error(const char **paths,
+ const int paths_num,
+ const bool verbose,
+ int *r_path_index)
+{
+ DynamicLibrary lib = NULL;
+ for (int a = 0; a < paths_num; a++) {
+ lib = dynamic_library_open(paths[a]);
+ if (lib) {
+ *r_path_index = a;
+ break;
+ }
+ }
+ if (lib == NULL) {
+ /* Use the last path as it's likely to be least specific. */
+ if (verbose) {
+ fprintf(stderr, "Unable to find '%s'\n", paths[paths_num - 1]);
+ }
+ }
+ return lib;
+}
+
+void *dynamic_library_find_with_error(DynamicLibrary lib, const char *symbol, const char *path_lib)
+{
+ void *symbol_var = dynamic_library_find(lib, symbol);
+ if (symbol_var == NULL) {
+ fprintf(stderr, "Unable to find '%s' in '%s'.\n", symbol, path_lib);
+ }
+ return symbol_var;
+}