From c2f84af73d4812a7099ba1339ae92f2cd0536eae Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 26 Apr 2015 21:26:12 +0200 Subject: [PATCH] case insensitive ".dll" for VST plugins - fixes #6285 TODO: check portability of strcasestr() --- libs/ardour/plugin_manager.cc | 3 +-- libs/ardour/vst_info_file.cc | 6 +++--- libs/fst/scanner.cc | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index e88541317c..37eb61ef3b 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -686,8 +686,7 @@ PluginManager::windows_vst_refresh (bool cache_only) static bool windows_vst_filter (const string& str, void * /*arg*/) { /* Not a dotfile, has a prefix before a period, suffix is "dll" */ - - return str[0] != '.' && (str.length() > 4 && str.find (".dll") == (str.length() - 4)); + return str[0] != '.' && str.length() > 4 && strings_equal_ignore_case (".dll", str.substr(str.length() - 4)); } int diff --git a/libs/ardour/vst_info_file.cc b/libs/ardour/vst_info_file.cc index 2d68421103..2b79f2bc77 100644 --- a/libs/ardour/vst_info_file.cc +++ b/libs/ardour/vst_info_file.cc @@ -351,7 +351,7 @@ vstfx_write_info_file (FILE* fp, vector *infos) static bool vstfx_blacklist_stat (const char *dllpath, int personal) { - if (strstr (dllpath, ".so" ) == 0 && strstr(dllpath, ".dll") == 0) { + if (strstr (dllpath, ".so" ) == 0 && strcasestr(dllpath, ".dll") == 0) { return true; } string const path = vstfx_blacklist_path (dllpath, personal); @@ -435,7 +435,7 @@ vstfx_remove_infofile (const char *dllpath) static char * vstfx_infofile_stat (const char *dllpath, struct stat* statbuf, int personal) { - if (strstr (dllpath, ".so" ) == 0 && strstr(dllpath, ".dll") == 0) { + if (strstr (dllpath, ".so" ) == 0 && strcasestr(dllpath, ".dll") == 0) { return 0; } @@ -494,7 +494,7 @@ vstfx_infofile_for_read (const char* dllpath) static FILE * vstfx_infofile_create (const char* dllpath, int personal) { - if (strstr (dllpath, ".so" ) == 0 && strstr(dllpath, ".dll") == 0) { + if (strstr (dllpath, ".so" ) == 0 && strcasestr(dllpath, ".dll") == 0) { return 0; } diff --git a/libs/fst/scanner.cc b/libs/fst/scanner.cc index c7cbd897db..aac1eb5d2a 100644 --- a/libs/fst/scanner.cc +++ b/libs/fst/scanner.cc @@ -75,7 +75,7 @@ int main (int argc, char **argv) { char *dllpath = NULL; if (argc == 3 && !strcmp("-f", argv[1])) { dllpath = argv[2]; - if (strstr (dllpath, ".so" ) || strstr(dllpath, ".dll")) { + if (strstr (dllpath, ".so" ) || strcasestr(dllpath, ".dll")) { vstfx_remove_infofile(dllpath); vstfx_un_blacklist(dllpath); } @@ -105,7 +105,7 @@ int main (int argc, char **argv) { #endif #ifdef WINDOWS_VST_SUPPORT - else if (strstr (dllpath, ".dll")) { + else if (strcasestr (dllpath, ".dll")) { infos = vstfx_get_info_fst(dllpath); } #endif