From 924b92f689668a16fbc2cf2280bee6cf065584c5 Mon Sep 17 00:00:00 2001
From: Thomas Debesse <dev@illwieckz.net>
Date: Thu, 23 Dec 2021 01:00:34 +0100
Subject: [PATCH] radiant: store preferences in Library/Application Support on
 macOS

---
 radiant/environment.cpp | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/radiant/environment.cpp b/radiant/environment.cpp
index d6be70d5..f7975518 100644
--- a/radiant/environment.cpp
+++ b/radiant/environment.cpp
@@ -302,17 +302,30 @@ void environment_init( int argc, char const* argv[] ){
 	}
 
 	if ( !portable_app_setup() ) {
-		// this is used on both Linux and macOS
-		// but a macOS specific code may be written instead
 		StringOutputStream home( 256 );
-		home << DirectoryCleaned(g_get_user_config_dir()) << "/" << RADIANT_BASENAME << "/";
-		// first create ~/.config
-		// since it may be missing on brand new home directory
-		Q_mkdir( g_get_user_config_dir() );
-		// then create ~/.config/netradiant
+#if GDEF_OS_MACOS
+		/* This is used on macOS, this will produce
+		~/Library/Application Support/NetRadiant folder. */
+		home << DirectoryCleaned( g_get_home_dir() );
+		Q_mkdir( home.c_str() );
+		home << "Library/";
+		Q_mkdir( home.c_str() );
+		home << "Application Support/";
+		Q_mkdir( home.c_str() );
+		home << RADIANT_NAME << "/";
+#else // if GDEF_OS_XDG
+		/* This is used on both Linux and FreeBSD,
+		this will produce ~/.config/netradiant folder
+		when environment has default settings, the
+		XDG_CONFIG_HOME variable modifies it. */
+		home << DirectoryCleaned( g_get_user_config_dir() );
+		Q_mkdir( home.c_str() );
+		home << RADIANT_BASENAME << "/";
+#endif // ! GDEF_OS_MACOS
 		Q_mkdir( home.c_str() );
 		home_path = home.c_str();
 	}
+
 	gamedetect();
 }
 
-- 
2.39.5