prepare fix for copying plugin state
[ardour.git] / libs / ardour / search_paths.cc
index 85eed77a57535b26c1694672259040b9763423e2..789c9b6b4878fc76cca954df9b0cc232d94cc7cf 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    Copyright (C) 2011 Tim Mayberry 
-    Copyright (C) 2013 Paul Davis 
+    Copyright (C) 2011 Tim Mayberry
+    Copyright (C) 2013 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -64,7 +64,7 @@ control_protocol_search_path ()
        Searchpath spath(user_config_directory ());
        spath += ardour_dll_directory ();
        spath.add_subdirectory_to_paths (surfaces_dir_name);
-       
+
        spath += Searchpath(Glib::getenv(surfaces_env_variable_name));
        return spath;
 }
@@ -163,14 +163,23 @@ route_template_search_path ()
        return spath;
 }
 
+Searchpath
+lua_search_path ()
+{
+       Searchpath spath (ardour_data_search_path());
+       spath.add_subdirectory_to_paths(lua_dir_name);
+
+       return spath;
+}
+
 #ifdef PLATFORM_WINDOWS
 
 const char*
 vst_search_path ()
 {
-       DWORD dwType = REG_SZ;  
+       DWORD dwType = REG_SZ;
        HKEY hKey;
-       DWORD dwSize = PATH_MAX;  
+       DWORD dwSize = PATH_MAX;
        char* p = 0;
        char* user_home = 0;
        char tmp[PATH_MAX+1];
@@ -196,11 +205,11 @@ vst_search_path ()
 
        if (p == 0) {
                char *pVSTx86 = 0;
-               char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86);
+               std::string pProgFilesX86 = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILESX86);
 
-               if (pProgFilesX86) {
+               if (!pProgFilesX86.empty()) {
                        // Look for a VST folder under C:\Program Files (x86)
-                       if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", NULL))
+                       if ((pVSTx86 = g_build_filename (pProgFilesX86.c_str(), "Steinberg", "VSTPlugins", NULL)))
                        {
                                if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS))
                                        if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR))
@@ -208,25 +217,21 @@ vst_search_path ()
 
                                g_free (pVSTx86);
                        }
-
-                       g_free (pProgFilesX86);
                }
 
                if (p == 0) {
                        // Look for a VST folder under C:\Program Files
                        char *pVST = 0;
-                       char *pProgFiles = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES);
+                       std::string pProgFiles = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILES);
 
-                       if (pProgFiles) {
-                               if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", NULL)) {
+                       if (!pProgFiles.empty()) {
+                               if ((pVST = g_build_filename (pProgFiles.c_str(), "Steinberg", "VSTPlugins", NULL))) {
                                        if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
                                                if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
                                                        p = g_build_filename (pVST, NULL);
 
                                        g_free (pVST);
                                }
-
-                               g_free (pProgFiles);
                        }
                }
        }
@@ -259,7 +264,7 @@ vst_search_path ()
        return p;
 }
 
-#else 
+#else
 
 /* Unix-like. Probably require some OS X specific breakdown if we ever add VST
  * support on that platform.