comparison plugin/LADSPAPluginFactory.cpp @ 1480:5ac102155409 plugin-path-config

Environment variable lookup fixes, & use this implementation throughout
author Chris Cannam
date Fri, 08 Jun 2018 11:27:40 +0100
parents 91bb68146dfc
children 900601b954f2
comparison
equal deleted inserted replaced
1479:ba27edcd6102 1480:5ac102155409
38 38
39 #ifdef HAVE_LRDF 39 #ifdef HAVE_LRDF
40 #include "lrdf.h" 40 #include "lrdf.h"
41 #endif // HAVE_LRDF 41 #endif // HAVE_LRDF
42 42
43 using std::string;
43 44
44 LADSPAPluginFactory::LADSPAPluginFactory() 45 LADSPAPluginFactory::LADSPAPluginFactory()
45 { 46 {
46 #ifdef HAVE_LRDF 47 #ifdef HAVE_LRDF
47 lrdf_init(); 48 lrdf_init();
564 565
565 std::vector<QString> 566 std::vector<QString>
566 LADSPAPluginFactory::getPluginPath() 567 LADSPAPluginFactory::getPluginPath()
567 { 568 {
568 std::vector<QString> pathList; 569 std::vector<QString> pathList;
569 std::string path; 570 string path;
570 571
571 char *cpath = getenv("LADSPA_PATH"); 572 (void)getEnvUtf8("DSSI_PATH", path);
572 if (cpath) path = cpath;
573 573
574 if (path == "") { 574 if (path == "") {
575 575
576 path = DEFAULT_LADSPA_PATH; 576 path = DEFAULT_LADSPA_PATH;
577 577
578 char *home = getenv("HOME"); 578 string home;
579 if (home) { 579 if (getEnvUtf8("HOME", home)) {
580 std::string::size_type f; 580 string::size_type f;
581 while ((f = path.find("$HOME")) != std::string::npos && 581 while ((f = path.find("$HOME")) != string::npos &&
582 f < path.length()) { 582 f < path.length()) {
583 path.replace(f, 5, home); 583 path.replace(f, 5, home);
584 } 584 }
585 } 585 }
586 586
587 #ifdef _WIN32 587 #ifdef _WIN32
588 const char *pfiles = getenv("ProgramFiles"); 588 string pfiles;
589 if (!pfiles) pfiles = "C:\\Program Files"; 589 if (!getEnvUtf8("ProgramFiles", pfiles)) {
590 { 590 pfiles = "C:\\Program Files";
591 std::string::size_type f; 591 }
592 while ((f = path.find("%ProgramFiles%")) != std::string::npos && 592
593 string::size_type f;
594 while ((f = path.find("%ProgramFiles%")) != string::npos &&
593 f < path.length()) { 595 f < path.length()) {
594 path.replace(f, 14, pfiles); 596 path.replace(f, 14, pfiles);
595 } 597 }
596 } 598 #endif
597 #endif 599 }
598 } 600
599 601 string::size_type index = 0, newindex = 0;
600 std::string::size_type index = 0, newindex = 0;
601 602
602 while ((newindex = path.find(PATH_SEPARATOR, index)) < path.size()) { 603 while ((newindex = path.find(PATH_SEPARATOR, index)) < path.size()) {
603 pathList.push_back(path.substr(index, newindex - index).c_str()); 604 pathList.push_back(path.substr(index, newindex - index).c_str());
604 index = newindex + 1; 605 index = newindex + 1;
605 } 606 }
732 } 733 }
733 734
734 QString category = m_taxonomy[identifier]; 735 QString category = m_taxonomy[identifier];
735 736
736 if (category == "") { 737 if (category == "") {
737 std::string name = rtd->name; 738 string name = rtd->name;
738 if (name.length() > 4 && 739 if (name.length() > 4 &&
739 name.substr(name.length() - 4) == " VST") { 740 name.substr(name.length() - 4) == " VST") {
740 category = "VST effects"; 741 category = "VST effects";
741 m_taxonomy[identifier] = category; 742 m_taxonomy[identifier] = category;
742 } 743 }