@@ -556,23 +556,29 @@ fextl::string GetDataDirectory(bool Global, const PortableInformation& PortableI
556556 return fextl::fmt::format (" {}/fex-emu/" , PortableInfo.InterpreterPath );
557557 }
558558
559- fextl::string DataDir {};
560559 if (Global) {
561- DataDir = GLOBAL_DATA_DIRECTORY;
562- } else {
563- const char * HomeDir = GetHomeDirectory ();
564- const char * DataXDG = getenv (" XDG_DATA_HOME" );
560+ return GLOBAL_DATA_DIRECTORY;
561+ }
565562
566- // use ~/.local/share if XDG_DATA_HOME is unset
567- const std::string fallback = fmt::format (" {}/.local/share" , HomeDir);
563+ const char * HomeDir = GetHomeDirectory ();
564+ const char * DataXDG = getenv (" XDG_DATA_HOME" );
565+ const fextl::string LegacyDir = fextl::string {HomeDir} + " /.fex-emu" ;
568566
569- if (DataOverride) {
570- // Data override will override the complete directory
571- DataDir = DataOverride;
572- } else {
573- DataDir = DataXDG ? DataXDG : fallback;
574- DataDir += " /fex-emu/" ;
575- }
567+ // If $HOME/.fex-emu exists, use that
568+ if (FHU::Filesystem::Exists (LegacyDir)) {
569+ return LegacyDir;
570+ }
571+
572+ // use ~/.local/share if XDG_DATA_HOME is unset
573+ const std::string fallback = fmt::format (" {}/.local/share" , HomeDir);
574+
575+ fextl::string DataDir {};
576+ if (DataOverride) {
577+ // Data override will override the complete directory
578+ DataDir = DataOverride;
579+ } else {
580+ DataDir = DataXDG ? DataXDG : fallback;
581+ DataDir += " /fex-emu/" ;
576582 }
577583
578584 return DataDir;
@@ -600,23 +606,31 @@ fextl::string GetConfigDirectory(bool Global, const PortableInformation& Portabl
600606
601607 fextl::string ConfigDir;
602608 if (Global) {
603- ConfigDir = GLOBAL_DATA_DIRECTORY;
604- } else {
605- const char * HomeDir = GetHomeDirectory ();
606- const char * ConfigXDG = getenv (" XDG_CONFIG_HOME" );
609+ return GLOBAL_DATA_DIRECTORY;
610+ }
607611
608- // use ~/.config if XDG_CONFIG_HOME is unset
609- const std::string fallback = fmt::format ( " {}/.config " , HomeDir );
612+ const char * HomeDir = GetHomeDirectory ();
613+ const char * ConfigXDG = getenv ( " XDG_CONFIG_HOME " );
610614
611- if (ConfigOverride) {
612- // Config override will override the complete directory
613- ConfigDir = ConfigOverride;
614- } else {
615- ConfigDir = ConfigXDG ? ConfigXDG : fallback;
616- ConfigDir += " /fex-emu/" ;
617- }
615+ const fextl::string LegacyDir = fextl::string {HomeDir} + " /.fex-emu" ;
616+
617+ // If $HOME/.fex-emu exists, use that
618+ if (FHU::Filesystem::Exists (LegacyDir)) {
619+ return LegacyDir;
620+ }
621+
622+ // use ~/.config if XDG_CONFIG_HOME is unset
623+ const std::string fallback = fmt::format (" {}/.config" , HomeDir);
624+
625+ if (ConfigOverride) {
626+ // Config override will override the complete directory
627+ ConfigDir = ConfigOverride;
628+ } else {
629+ ConfigDir = ConfigXDG ? ConfigXDG : fallback;
630+ ConfigDir += " /fex-emu/" ;
618631 }
619632
633+
620634 return ConfigDir;
621635}
622636
@@ -638,6 +652,13 @@ fextl::string GetCacheDirectory() {
638652 const char * HomeDir = GetHomeDirectory ();
639653 const char * CacheXDG = getenv (" XDG_CACHE_HOME" );
640654
655+ const fextl::string LegacyDir = fextl::string {HomeDir} + " /.fex-emu" ;
656+
657+ // If $HOME/.fex-emu exists, use that
658+ if (FHU::Filesystem::Exists (LegacyDir)) {
659+ return LegacyDir;
660+ }
661+
641662 // use ~/.cache if XDG_CACHE_HOME is unset
642663 const std::string fallback = fmt::format (" {}/.cache" , HomeDir);
643664
0 commit comments