X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Ffilesystem_paths.cc;h=73bfaff137f726c0b9854d9516d552ebf8d7e958;hb=58f82b52e584c48c90cc98c575d085aef165ebc0;hp=2d144947645604c65d6afb0f020d3972546307cd;hpb=8c53e14e6c243ffb42504bc41d790a4e11ecc7af;p=ardour.git diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc index 2d14494764..73bfaff137 100644 --- a/libs/ardour/filesystem_paths.cc +++ b/libs/ardour/filesystem_paths.cc @@ -17,10 +17,10 @@ */ #include +#include #include "pbd/error.h" #include "pbd/compose.h" -#include "pbd/filesystem_paths.h" #include #include @@ -36,15 +36,15 @@ namespace ARDOUR { using std::string; -sys::path +std::string user_config_directory () { - sys::path p; + static std::string p; -#ifdef __APPLE__ - p = Glib::get_home_dir(); - p /= "Library/Preferences"; + if (!p.empty()) return p; +#ifdef __APPLE__ + p = Glib::build_filename (Glib::get_home_dir(), "Library/Preferences"); #else const char* c = 0; @@ -57,71 +57,81 @@ user_config_directory () const string home_dir = Glib::get_home_dir(); if (home_dir.empty ()) { - const string error_msg = "Unable to determine home directory"; - - // log the error - error << error_msg << endmsg; - - throw sys::filesystem_error(error_msg); + error << "Unable to determine home directory" << endmsg; + exit (1); } p = home_dir; - p /= ".config"; + p = Glib::build_filename (p, ".config"); } #endif - p /= user_config_dir_name; - - std::string ps (p.to_string()); + p = Glib::build_filename (p, user_config_dir_name); - if (!Glib::file_test (ps, Glib::FILE_TEST_EXISTS)) { - if (g_mkdir_with_parents (ps.c_str(), 0755)) { + if (!Glib::file_test (p, Glib::FILE_TEST_EXISTS)) { + if (g_mkdir_with_parents (p.c_str(), 0755)) { error << string_compose (_("Cannot create Configuration directory %1 - cannot run"), - ps) << endmsg; + p) << endmsg; exit (1); } - } else if (!Glib::file_test (ps, Glib::FILE_TEST_IS_DIR)) { + } else if (!Glib::file_test (p, Glib::FILE_TEST_IS_DIR)) { error << string_compose (_("Configuration directory %1 already exists and is not a directory/folder - cannot run"), - ps) << endmsg; + p) << endmsg; exit (1); } return p; } -sys::path -ardour_module_directory () -{ - sys::path module_directory(MODULE_DIR); - module_directory /= "ardour3"; - return module_directory; -} - -SearchPath -ardour_search_path () +std::string +ardour_dll_directory () { - SearchPath spath_env(Glib::getenv("ARDOUR_PATH")); - return spath_env; + std::string s = Glib::getenv("ARDOUR_DLL_PATH"); + if (s.empty()) { + std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); + ::exit (1); + } + return s; } SearchPath -system_config_search_path () +ardour_config_search_path () { - SearchPath config_path(system_config_directories()); - - config_path.add_subdirectory_to_paths("ardour3"); + static SearchPath search_path; + + if (search_path.empty()) { + search_path += user_config_directory(); + + std::string s = Glib::getenv("ARDOUR_CONFIG_PATH"); + if (s.empty()) { + std::cerr << _("ARDOUR_CONFIG_PATH not set in environment - exiting\n"); + ::exit (1); + } + + search_path += SearchPath (s); + } - return config_path; + return search_path; } SearchPath -system_data_search_path () +ardour_data_search_path () { - SearchPath data_path(system_data_directories()); - - data_path.add_subdirectory_to_paths("ardour3"); + static SearchPath search_path; + + if (search_path.empty()) { + search_path += user_config_directory(); + + std::string s = Glib::getenv("ARDOUR_DATA_PATH"); + if (s.empty()) { + std::cerr << _("ARDOUR_DATA_PATH not set in environment - exiting\n"); + ::exit (1); + } + + search_path += SearchPath (s); + } - return data_path; + return search_path; } } // namespace ARDOUR