|
10 | 10 | #include "driver_discovery.h"
|
11 | 11 | #include <iostream>
|
12 | 12 |
|
| 13 | +#ifdef __linux__ |
| 14 | +#include <unistd.h> |
| 15 | +#include <sys/types.h> |
| 16 | +#include <pwd.h> |
| 17 | +#endif // __linux__ |
| 18 | + |
13 | 19 | namespace loader
|
14 | 20 | {
|
15 | 21 | ///////////////////////////////////////////////////////////////////////////////
|
@@ -261,16 +267,45 @@ namespace loader
|
261 | 267 | auto discoveredDrivers = discoverEnabledDrivers();
|
262 | 268 | std::string loadLibraryErrorValue;
|
263 | 269 |
|
264 |
| - |
| 270 | + const char *home_dir = ""; |
| 271 | +#ifdef _WIN32 |
| 272 | + std::string home_dir_string = getenv_string("USERPROFILE"); |
| 273 | + if (home_dir == ""){ |
| 274 | + auto home_drive = getenv_string("HOMEDRIVE"); |
| 275 | + auto home_path = getenv_string("HOMEPATH"); |
| 276 | + if ((home_drive != "") && (home_path != "")) { |
| 277 | + home_dir_string = home_drive + home_path; |
| 278 | + } else { |
| 279 | + home_dir_string = "."; |
| 280 | + } |
| 281 | + } |
| 282 | + home_dir = home_dir_string.c_str(); |
| 283 | +#else |
| 284 | + home_dir = getenv("HOME"); |
| 285 | + |
| 286 | + if ((home_dir = getenv("HOME")) == NULL) { |
| 287 | + home_dir = getpwuid(getuid())->pw_dir; |
| 288 | + if (home_dir == NULL) { |
| 289 | + home_dir = "."; |
| 290 | + } |
| 291 | + } |
| 292 | +#endif |
265 | 293 | auto loader_file = getenv_string("ZEL_LOADER_LOG_FILE");
|
266 | 294 | if (loader_file.empty()){
|
267 | 295 | loader_file = LOADER_LOG_FILE_DEFAULT;
|
268 | 296 | }
|
269 | 297 |
|
| 298 | + std::string full_log_file_path = ""; |
| 299 | + |
| 300 | +#ifdef _WIN32 |
| 301 | + full_log_file_path = std::string(home_dir) + "\\" + LOADER_LOG_FILE_DIRECTORY + "\\" + loader_file; |
| 302 | +#else |
| 303 | + full_log_file_path = std::string(home_dir) + "/" + LOADER_LOG_FILE_DIRECTORY + "/" + loader_file; |
| 304 | +#endif |
270 | 305 | auto logging_enabled = getenv_tobool( "ZEL_ENABLE_LOADER_LOGGING" );
|
271 | 306 |
|
272 | 307 | auto log_level = getenv_string("ZEL_LOADER_LOGGING_LEVEL");
|
273 |
| - zel_logger = std::make_shared<Logger>("ze_loader", loader_file, !log_level.empty() ? log_level : "warn", logging_enabled); |
| 308 | + zel_logger = std::make_shared<Logger>("ze_loader", full_log_file_path, !log_level.empty() ? log_level : "warn", logging_enabled); |
274 | 309 | if ((log_level == "trace") && !debugTraceEnabled) {
|
275 | 310 | debugTraceEnabled = true;
|
276 | 311 | zel_logger->log_to_console = false;
|
|
0 commit comments