Browse Source

Remove system::glob(). Use regex to find Fundamental package path in plugin::init().

tags/v2.5.2
Andrew Belt 6 months ago
parent
commit
5bf14750f0
3 changed files with 11 additions and 22 deletions
  1. +0
    -4
      include/system.hpp
  2. +11
    -1
      src/plugin.cpp
  3. +0
    -17
      src/system.cpp

+ 0
- 4
include/system.hpp View File

@@ -24,10 +24,6 @@ std::string join(const std::string& path1, const std::string& path2, Paths... pa
`depth` is the number of directories to recurse. 0 depth does not recurse. -1 depth recurses infinitely. `depth` is the number of directories to recurse. 0 depth does not recurse. -1 depth recurses infinitely.
*/ */
std::vector<std::string> getEntries(const std::string& dirPath, int depth = 0); std::vector<std::string> getEntries(const std::string& dirPath, int depth = 0);
/** Expands a glob pattern such as `dir/file*.txt` to a list of paths.
Paths are sorted.
*/
std::vector<std::string> glob(const std::string& pattern);
bool exists(const std::string& path); bool exists(const std::string& path);
/** Returns whether the given path is a file. */ /** Returns whether the given path is a file. */
bool isFile(const std::string& path); bool isFile(const std::string& path);


+ 11
- 1
src/plugin.cpp View File

@@ -4,6 +4,7 @@
#include <map> #include <map>
#include <stdexcept> #include <stdexcept>
#include <tuple> #include <tuple>
#include <regex>


#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@@ -244,6 +245,15 @@ static void extractPackages(std::string path) {
} }
} }


static std::string getFundamentalPackagePath() {
std::regex r("Fundamental-.*-" + APP_OS + "-" + APP_CPU + "\\.vcvplugin");
for (const std::string& path : system::getEntries(asset::systemDir)) {
if (std::regex_match(system::getFilename(path), r))
return path;
}
return "";
}

//////////////////// ////////////////////
// public API // public API
//////////////////// ////////////////////
@@ -284,7 +294,7 @@ void init() {


// If Fundamental wasn't loaded, copy the bundled Fundamental package and load it // If Fundamental wasn't loaded, copy the bundled Fundamental package and load it
if (!settings::devMode && !getPlugin("Fundamental")) { if (!settings::devMode && !getPlugin("Fundamental")) {
std::string fundamentalPackage = get(system::glob(asset::system("Fundamental-*-" + APP_OS + "-" + APP_CPU + ".vcvplugin")), 0);
std::string fundamentalPackage = getFundamentalPackagePath();
std::string fundamentalDir = system::join(pluginsPath, "Fundamental"); std::string fundamentalDir = system::join(pluginsPath, "Fundamental");
if (fundamentalPackage != "" && system::isFile(fundamentalPackage)) { if (fundamentalPackage != "" && system::isFile(fundamentalPackage)) {
INFO("Extracting bundled Fundamental package"); INFO("Extracting bundled Fundamental package");


+ 0
- 17
src/system.cpp View File

@@ -9,7 +9,6 @@
#include <dirent.h> #include <dirent.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <cxxabi.h> // for abi::__cxa_demangle #include <cxxabi.h> // for abi::__cxa_demangle
#include <glob.h>


#if defined ARCH_LIN || defined ARCH_MAC #if defined ARCH_LIN || defined ARCH_MAC
#include <pthread.h> #include <pthread.h>
@@ -89,22 +88,6 @@ std::vector<std::string> getEntries(const std::string& dirPath, int depth) {
} }




std::vector<std::string> glob(const std::string& pattern) {
glob_t glob_result;
memset(&glob_result, 0, sizeof(glob_result));
std::vector<std::string> paths;

if (!glob(pattern.c_str(), GLOB_BRACE, NULL, &glob_result)) {
for (size_t i = 0; i < glob_result.gl_pathc; i++) {
paths.push_back(std::string(glob_result.gl_pathv[i]));
}
}

globfree(&glob_result);
return paths;
}


bool exists(const std::string& path) { bool exists(const std::string& path) {
try { try {
return fs::exists(fs::u8path(path)); return fs::exists(fs::u8path(path));


Loading…
Cancel
Save