nonguix/nongnu/packages/patches/glvnd.patch
2023-03-28 21:56:59 +02:00

47 lines
1.2 KiB
Diff

diff --git a/src/GLX/libglxmapping.c b/src/GLX/libglxmapping.c
index ff2c3a6..3ac21e9 100644
--- a/src/GLX/libglxmapping.c
+++ b/src/GLX/libglxmapping.c
@@ -28,6 +28,7 @@
#include <pthread.h>
#include <dlfcn.h>
#include <string.h>
+#include <sys/stat.h>
#if defined(HASH_DEBUG)
# include <stdio.h>
@@ -292,7 +293,33 @@ static char *ConstructVendorLibraryFilename(const char *vendorName)
char *filename;
int ret;
+ const char* env = NULL;
+ char **tokens;
+ int i;
+ struct stat st;
+
+ env = getenv("GUIX_GL_PATH");
+
+ if (env != NULL) {
+
+ tokens = SplitString(env, NULL, ":");
+
+ if (tokens != NULL) {
+ for (i=0; tokens[i] != NULL; i++) {
+ ret = glvnd_asprintf(&filename, "%s/libGLX_%s.so.0", tokens[i], vendorName);
+ if (ret >= 0) {
+ if (stat(filename, &st) == 0) {
+ free(tokens);
+
+ return filename;
+ }
+ }
+ }
+ }
+ free(tokens);
+ }
+
ret = glvnd_asprintf(&filename, "libGLX_%s.so.0", vendorName);
if (ret < 0) {
return NULL;