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.
*/
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);
/** Returns whether the given path is a file. */
bool isFile(const std::string& path);


+ 11
- 1
src/plugin.cpp View File

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

#include <sys/types.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
////////////////////
@@ -284,7 +294,7 @@ void init() {

// If Fundamental wasn't loaded, copy the bundled Fundamental package and load it
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");
if (fundamentalPackage != "" && system::isFile(fundamentalPackage)) {
INFO("Extracting bundled Fundamental package");


+ 0
- 17
src/system.cpp View File

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

#if defined ARCH_LIN || defined ARCH_MAC
#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) {
try {
return fs::exists(fs::u8path(path));


Loading…
Cancel
Save