From 2d15c10e0f586d426fa43fe22c8d209ca8093b5a Mon Sep 17 00:00:00 2001
From: XMRig <support@xmrig.com>
Date: Sun, 22 Dec 2019 19:48:33 +0700
Subject: [PATCH] Added ENV support for "loader" option.

---
 src/backend/cuda/wrappers/CudaLib.cpp  | 5 +++--
 src/backend/cuda/wrappers/CudaLib.h    | 2 +-
 src/backend/opencl/wrappers/OclLib.cpp | 8 +++++---
 src/backend/opencl/wrappers/OclLib.h   | 2 +-
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/backend/cuda/wrappers/CudaLib.cpp b/src/backend/cuda/wrappers/CudaLib.cpp
index 189c6b2a1..c148d9f89 100644
--- a/src/backend/cuda/wrappers/CudaLib.cpp
+++ b/src/backend/cuda/wrappers/CudaLib.cpp
@@ -28,6 +28,7 @@
 
 
 #include "backend/cuda/wrappers/CudaLib.h"
+#include "base/kernel/Env.h"
 #include "crypto/rx/RxAlgo.h"
 
 
@@ -117,7 +118,7 @@ String CudaLib::m_loader;
 bool xmrig::CudaLib::init(const char *fileName)
 {
     if (!m_initialized) {
-        m_loader      = fileName == nullptr ? defaultLoader() : fileName;
+        m_loader      = fileName == nullptr ? defaultLoader() : Env::expand(fileName);
         m_ready       = uv_dlopen(m_loader, &cudaLib) == 0 && load();
         m_initialized = true;
     }
@@ -319,7 +320,7 @@ bool xmrig::CudaLib::load()
 }
 
 
-const char *xmrig::CudaLib::defaultLoader()
+xmrig::String xmrig::CudaLib::defaultLoader()
 {
 #   if defined(__APPLE__)
     return "/System/Library/Frameworks/OpenCL.framework/OpenCL"; // FIXME
diff --git a/src/backend/cuda/wrappers/CudaLib.h b/src/backend/cuda/wrappers/CudaLib.h
index 4874112f2..6202e0491 100644
--- a/src/backend/cuda/wrappers/CudaLib.h
+++ b/src/backend/cuda/wrappers/CudaLib.h
@@ -95,7 +95,7 @@ public:
 
 private:
     static bool load();
-    static const char *defaultLoader();
+    static String defaultLoader();
 
     static bool m_initialized;
     static bool m_ready;
diff --git a/src/backend/opencl/wrappers/OclLib.cpp b/src/backend/opencl/wrappers/OclLib.cpp
index f156ed3d8..d3329e730 100644
--- a/src/backend/opencl/wrappers/OclLib.cpp
+++ b/src/backend/opencl/wrappers/OclLib.cpp
@@ -28,10 +28,12 @@
 #include <uv.h>
 
 
+#include "backend/opencl/wrappers/OclLib.h"
 #include "backend/common/Tags.h"
 #include "backend/opencl/wrappers/OclError.h"
-#include "backend/opencl/wrappers/OclLib.h"
 #include "base/io/log/Log.h"
+#include "base/kernel/Env.h"
+
 
 #if defined(OCL_DEBUG_REFERENCE_COUNT)
 #   define LOG_REFS(x, ...) xmrig::Log::print(xmrig::Log::WARNING, x, ##__VA_ARGS__)
@@ -188,7 +190,7 @@ static String getOclString(FUNC fn, OBJ obj, PARAM param)
 bool xmrig::OclLib::init(const char *fileName)
 {
     if (!m_initialized) {
-        m_loader      = fileName == nullptr ? defaultLoader() : fileName;
+        m_loader      = fileName == nullptr ? defaultLoader() : Env::expand(fileName);
         m_ready       = uv_dlopen(m_loader, &oclLib) == 0 && load();
         m_initialized = true;
     }
@@ -257,7 +259,7 @@ bool xmrig::OclLib::load()
 }
 
 
-const char *xmrig::OclLib::defaultLoader()
+xmrig::String xmrig::OclLib::defaultLoader()
 {
 #   if defined(__APPLE__)
     return "/System/Library/Frameworks/OpenCL.framework/OpenCL";
diff --git a/src/backend/opencl/wrappers/OclLib.h b/src/backend/opencl/wrappers/OclLib.h
index 0c0eb0d4d..9b9e19a8b 100644
--- a/src/backend/opencl/wrappers/OclLib.h
+++ b/src/backend/opencl/wrappers/OclLib.h
@@ -102,7 +102,7 @@ public:
 
 private:
     static bool load();
-    static const char *defaultLoader();
+    static String defaultLoader();
 
     static bool m_initialized;
     static bool m_ready;