13
0

Modified nesting to ensure that 'vst_search_path()' shouldn't return NULL if the first test fails

This commit is contained in:
John Emmas 2014-03-09 11:48:09 +00:00
parent 611dc796de
commit fc94f71d5a

View File

@ -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);
}
}
}