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 #include #include +#include #if defined(HASH_DEBUG) # include @@ -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;