vcpkg/ports/alsa/fix-plugin-dir.patch

48 lines
1.3 KiB
Diff

diff --git a/src/dlmisc.c b/src/dlmisc.c
index f64c716..a413233 100644
--- a/src/dlmisc.c
+++ b/src/dlmisc.c
@@ -34,6 +34,9 @@
#endif
#include <limits.h>
+#include <sys/types.h>
+#include <dirent.h>
+
#if defined(HAVE_LIBDL) && defined(__GLIBC__) && !defined(__UCLIBC__)
#define DL_ORIGIN_AVAILABLE 1
#endif
@@ -79,6 +82,16 @@ static void snd_dlinfo_origin(char *path, size_t path_len)
#endif
}
+static unsigned int checkExist(const char* dirName) {
+ DIR* dir = opendir(dirName);
+ if(dir) {
+ closedir(dir);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
/**
*
* \brief Compose the dynamic path
@@ -94,8 +107,14 @@ int snd_dlpath(char *path, size_t path_len, const char *name)
const char *env = getenv("ALSA_PLUGIN_DIR");
if (env) {
snd_plugin_dir = strdup(env);
+ } else if(checkExist(ALSA_PLUGIN_DIR) ) {
+ snd_plugin_dir = strdup(ALSA_PLUGIN_DIR);
+ } else if(sizeof(void*) == 8 && checkExist("/usr/lib64/alsa-lib") ) {
+ snd_plugin_dir = strdup("/usr/lib64/alsa-lib");
+ } else if(sizeof(void*) == 4 && checkExist("/usr/lib32/alsa-lib") ) {
+ snd_plugin_dir = strdup("/usr/lib32/alsa-lib");
} else {
- snd_dlinfo_origin(path, path_len);
+ snd_plugin_dir = strdup("/usr/lib/alsa-lib");
}
snd_plugin_dir_set = 1;
}