plugin scan progress-display & preferences
[ardour.git] / libs / ardour / filesystem_paths.cc
index cd78397f3e6e98b7d01939d93b9f3f7f2c91ae8e..54f7508b659d92ce55b34410dcbbd1fb35b26f1b 100644 (file)
@@ -39,7 +39,9 @@ using std::string;
 std::string
 user_config_directory ()
 {
-       std::string p;
+       static std::string p;
+
+       if (!p.empty()) return p;
 
 #ifdef __APPLE__
        p = Glib::build_filename (Glib::get_home_dir(), "Library/Preferences");
@@ -84,49 +86,71 @@ user_config_directory ()
 std::string
 ardour_dll_directory ()
 {
+#ifdef PLATFORM_WINDOWS
+       std::string dll_dir_path(g_win32_get_package_installation_directory_of_module(NULL));
+       dll_dir_path = Glib::build_filename (dll_dir_path, "lib");
+       return Glib::build_filename (dll_dir_path, "ardour3");
+#else
        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;
+#endif
 }
 
-SearchPath
+#ifdef PLATFORM_WINDOWS
+Searchpath
+windows_search_path ()
+{
+       std::string dll_dir_path(g_win32_get_package_installation_directory_of_module(NULL));
+       dll_dir_path = Glib::build_filename (dll_dir_path, "share");
+       return Glib::build_filename (dll_dir_path, "ardour3");
+}
+#endif
+
+Searchpath
 ardour_config_search_path ()
 {
-       static SearchPath search_path;
+       static Searchpath search_path;
 
        if (search_path.empty()) {
                search_path += user_config_directory();
-               
+#ifdef PLATFORM_WINDOWS
+               search_path += windows_search_path ();
+#else
                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);
+               search_path += Searchpath (s);
+#endif
        }
 
        return search_path;
 }
 
-SearchPath
+Searchpath
 ardour_data_search_path ()
 {
-       static SearchPath search_path;
+       static Searchpath search_path;
 
        if (search_path.empty()) {
                search_path += user_config_directory();
-               
+#ifdef PLATFORM_WINDOWS
+               search_path += windows_search_path ();
+#else
                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);
+               search_path += Searchpath (s);
+#endif
        }
 
        return search_path;