updated build system
This commit is contained in:
		
							
								
								
									
										36
									
								
								support/3rd_party/src/utils/path.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								support/3rd_party/src/utils/path.cpp
									
									
									
									
										vendored
									
									
								
							| @@ -37,25 +37,31 @@ static const std::wstring directory_seperator_str_w{ | ||||
|  | ||||
| [[nodiscard]] auto resolve(std::string path) -> std::string { | ||||
| #if defined(_WIN32) | ||||
|   repertory::utils::string::replace(path, "~", "%USERPROFILE%"); | ||||
|   if (repertory::utils::string::contains(path, "~") || | ||||
|       repertory::utils::string::contains(path, "%")) { | ||||
|     repertory::utils::string::replace(path, "~", "%USERPROFILE%"); | ||||
|  | ||||
|   std::string dest; | ||||
|   dest.resize(::ExpandEnvironmentStringsA(path.c_str(), nullptr, 0)); | ||||
|   ::ExpandEnvironmentStringsA(path.c_str(), dest.data(), | ||||
|                               static_cast<DWORD>(dest.size())); | ||||
|   path = dest.c_str(); | ||||
|   return path; | ||||
|     std::string dest; | ||||
|     dest.resize(::ExpandEnvironmentStringsA(path.c_str(), nullptr, 0)); | ||||
|     ::ExpandEnvironmentStringsA(path.c_str(), dest.data(), | ||||
|                                 static_cast<DWORD>(dest.size())); | ||||
|     path = dest.c_str(); | ||||
|   } | ||||
| #else  // !defined (_WIN32) | ||||
|   std::string home{}; | ||||
|   repertory::utils::use_getpwuid(getuid(), [&home](struct passwd *pw) { | ||||
|     home = (pw->pw_dir ? pw->pw_dir : ""); | ||||
|     if (home.empty() || ((home == "/") && (getuid() != 0))) { | ||||
|       home = repertory::utils::path::combine("/home", {pw->pw_name}); | ||||
|     } | ||||
|   }); | ||||
|   if (repertory::utils::string::contains(path, "~")) { | ||||
|     std::string home{}; | ||||
|     repertory::utils::use_getpwuid(getuid(), [&home](struct passwd *pw) { | ||||
|       home = (pw->pw_dir ? pw->pw_dir : ""); | ||||
|       if (home.empty() || ((home == "/") && (getuid() != 0))) { | ||||
|         home = repertory::utils::path::combine("/home", {pw->pw_name}); | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|   return repertory::utils::string::replace(path, "~", home); | ||||
|     return repertory::utils::string::replace(path, "~", home); | ||||
|   } | ||||
| #endif // defined (_WIN32) | ||||
|  | ||||
|   return path; | ||||
| } | ||||
| } // namespace | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user