Modified nesting to ensure that 'vst_search_path()' shouldn't return NULL if the first test fails
This commit is contained in:
parent
611dc796de
commit
fc94f71d5a
@ -42,78 +42,81 @@ vst_search_path ()
|
||||
|
||||
if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_CURRENT_USER, "Software\\VST", 0, KEY_READ, &hKey)) {
|
||||
// Look for the user's VST Registry entry
|
||||
if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) {
|
||||
if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
|
||||
p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
|
||||
}
|
||||
|
||||
RegCloseKey (hKey);
|
||||
|
||||
if (p == 0) {
|
||||
if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey)) {
|
||||
// Look for a global VST Registry entry
|
||||
if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
|
||||
p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
|
||||
|
||||
RegCloseKey (hKey);
|
||||
}
|
||||
|
||||
if (p == 0) {
|
||||
char *pVSTx86 = 0;
|
||||
char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86);
|
||||
|
||||
if (pProgFilesX86) {
|
||||
// Look for a VST folder under C:\Program Files (x86)
|
||||
if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0)) {
|
||||
if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS))
|
||||
if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR))
|
||||
p = g_build_filename (pVSTx86, 0);
|
||||
|
||||
g_free (pVSTx86);
|
||||
}
|
||||
|
||||
g_free (pProgFilesX86);
|
||||
}
|
||||
}
|
||||
|
||||
if (p == 0) {
|
||||
if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey))
|
||||
{
|
||||
// Look for a global VST Registry entry
|
||||
if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize))
|
||||
p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0);
|
||||
|
||||
RegCloseKey (hKey);
|
||||
}
|
||||
}
|
||||
|
||||
if (p == 0) {
|
||||
char *pVSTx86 = 0;
|
||||
char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86);
|
||||
|
||||
if (pProgFilesX86) {
|
||||
// Look for a VST folder under C:\Program Files (x86)
|
||||
if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0))
|
||||
{
|
||||
if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS))
|
||||
if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR))
|
||||
p = g_build_filename (pVSTx86, 0);
|
||||
|
||||
g_free (pVSTx86);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (pProgFiles) {
|
||||
if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) {
|
||||
if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
|
||||
if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
|
||||
p = g_build_filename (pVST, 0);
|
||||
g_free (pVST);
|
||||
}
|
||||
|
||||
g_free (pProgFiles);
|
||||
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);
|
||||
|
||||
if (pProgFiles) {
|
||||
if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) {
|
||||
if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
|
||||
if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
|
||||
p = g_build_filename (pVST, 0);
|
||||
|
||||
g_free (pVST);
|
||||
}
|
||||
|
||||
g_free (pProgFiles);
|
||||
}
|
||||
}
|
||||
|
||||
if (p == 0) {
|
||||
// If all else failed, assume the plugins are under "My Documents"
|
||||
user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
if (user_home) {
|
||||
p = g_build_filename (user_home, "Plugins", "VST", 0);
|
||||
} else {
|
||||
user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
|
||||
if (user_home)
|
||||
p = g_build_filename (user_home, "Plugins", "VST", 0);
|
||||
}
|
||||
} else {
|
||||
// Concatenate the registry path with the user's personal path
|
||||
}
|
||||
|
||||
if (p == 0) {
|
||||
// If all else failed, assume the plugins are under "My Documents"
|
||||
user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
if (user_home) {
|
||||
p = g_build_filename (user_home, "Plugins", "VST", 0);
|
||||
} else {
|
||||
user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
|
||||
if (user_home)
|
||||
p = g_build_filename (user_home, "Plugins", "VST", 0);
|
||||
}
|
||||
} else {
|
||||
// Concatenate the registry path with the user's personal path
|
||||
user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
|
||||
if (user_home) {
|
||||
p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0);
|
||||
} else {
|
||||
user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
|
||||
|
||||
user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
|
||||
|
||||
if (user_home) {
|
||||
p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0);
|
||||
} else {
|
||||
user_home = g_build_filename(g_get_home_dir(), "My Documents", 0);
|
||||
if (user_home) {
|
||||
p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0);
|
||||
}
|
||||
p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user