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