Unify macOS configuration paths in a single location
Duplicated hardcoded path was updated in only 1 of 2 locations. Fixes: #311
This commit is contained in:
		
							parent
							
								
									62a469a89b
								
							
						
					
					
						commit
						4675596dcd
					
				
					 1 changed files with 23 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -50,6 +50,23 @@ static std::string GetConfigName()
 | 
			
		|||
 | 
			
		||||
std::string cached_conf_path;
 | 
			
		||||
 | 
			
		||||
static std::string ResolveHome(std::string tilde_path)
 | 
			
		||||
{
 | 
			
		||||
	Cross::ResolveHomedir(tilde_path);
 | 
			
		||||
	return tilde_path;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(MACOSX)
 | 
			
		||||
 | 
			
		||||
static std::string DetermineConfigPath()
 | 
			
		||||
{
 | 
			
		||||
	const std::string conf_path = ResolveHome("~/Library/Preferences/DOSBox");
 | 
			
		||||
	mkdir(conf_path.c_str(), 0700);
 | 
			
		||||
	return conf_path;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
static bool CreateDirectories(const std::string &path)
 | 
			
		||||
{
 | 
			
		||||
	struct stat sb;
 | 
			
		||||
| 
						 | 
				
			
			@ -68,12 +85,6 @@ static bool CreateDirectories(const std::string &path)
 | 
			
		|||
	return (mkdir(path.c_str(), 0700) == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static std::string ResolveHome(std::string tilde_path)
 | 
			
		||||
{
 | 
			
		||||
	Cross::ResolveHomedir(tilde_path);
 | 
			
		||||
	return tilde_path;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool PathExists(const std::string &path)
 | 
			
		||||
{
 | 
			
		||||
	return (access(path.c_str(), F_OK) == 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -106,17 +117,20 @@ static std::string DetermineConfigPath()
 | 
			
		|||
	return conf_path;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // !WIN32
 | 
			
		||||
#endif // !MACOSX
 | 
			
		||||
 | 
			
		||||
void CROSS_DetermineConfigPaths()
 | 
			
		||||
{
 | 
			
		||||
#if !defined(WIN32) && !defined(MACOSX)
 | 
			
		||||
	if (cached_conf_path.empty())
 | 
			
		||||
		cached_conf_path = DetermineConfigPath();
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // !WIN32
 | 
			
		||||
 | 
			
		||||
#ifdef WIN32
 | 
			
		||||
 | 
			
		||||
void CROSS_DetermineConfigPaths() {}
 | 
			
		||||
 | 
			
		||||
static void W32_ConfDir(std::string& in,bool create) {
 | 
			
		||||
	int c = create?1:0;
 | 
			
		||||
	char result[MAX_PATH] = { 0 };
 | 
			
		||||
| 
						 | 
				
			
			@ -139,9 +153,6 @@ void Cross::GetPlatformConfigDir(std::string& in) {
 | 
			
		|||
#ifdef WIN32
 | 
			
		||||
	W32_ConfDir(in,false);
 | 
			
		||||
	in += "\\DOSBox";
 | 
			
		||||
#elif defined(MACOSX)
 | 
			
		||||
	in = "~/Library/Preferences";
 | 
			
		||||
	ResolveHomedir(in);
 | 
			
		||||
#else
 | 
			
		||||
	assert(!cached_conf_path.empty());
 | 
			
		||||
	in = cached_conf_path;
 | 
			
		||||
| 
						 | 
				
			
			@ -161,10 +172,6 @@ void Cross::CreatePlatformConfigDir(std::string &in)
 | 
			
		|||
	W32_ConfDir(in,true);
 | 
			
		||||
	in += "\\DOSBox";
 | 
			
		||||
	mkdir(in.c_str());
 | 
			
		||||
#elif defined(MACOSX)
 | 
			
		||||
	in = "~/Library/Preferences/DOSBox";
 | 
			
		||||
	ResolveHomedir(in);
 | 
			
		||||
	mkdir(in.c_str(), 0700);
 | 
			
		||||
#else
 | 
			
		||||
	assert(!cached_conf_path.empty());
 | 
			
		||||
	in = cached_conf_path.c_str();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue