diff options
author | dec05eba <dec05eba@protonmail.com> | 2021-06-26 17:33:24 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2021-06-26 17:33:24 +0200 |
commit | 61d9e8699687342c2e32c32c8d4eb71760d5d290 (patch) | |
tree | 9fd6ce694d857704ad369ac32f779c19ab4f665d /src/Conf.cpp | |
parent | 3a150e29cd1fa63614f45dff01240b01f9c4a025 (diff) |
Use fork/exec instead of popen. Add Path class
Diffstat (limited to 'src/Conf.cpp')
-rw-r--r-- | src/Conf.cpp | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/src/Conf.cpp b/src/Conf.cpp index 12421e0..543c8d9 100644 --- a/src/Conf.cpp +++ b/src/Conf.cpp @@ -643,13 +643,7 @@ namespace sibs SibsConfig::~SibsConfig() { - // TODO: Fix this shit.. why does this cause segfault? - /* - for(PackageListDependency *dependency : packageListDependencies) - { - //delete dependency; - } - */ + } bool SibsConfig::isDefined(const std::string &name) const @@ -1102,10 +1096,10 @@ namespace sibs if(!dependencyVersionResult) throw ParserException("Dependency " + string(name.data, name.size) + " version is in invalid format, error: " + dependencyVersionResult.getErrMsg()); - PackageListDependency *dependency = new PackageListDependency(); - dependency->name = string(name.data, name.size); - dependency->version = dependencyVersionResult.unwrap(); - packageListDependencies.emplace_back(dependency); + PackageListDependency dependency; + dependency.name = string(name.data, name.size); + dependency.version = dependencyVersionResult.unwrap(); + packageListDependencies.push_back(std::move(dependency)); } else throw ParserException("Expected field under dependencies to be a single value or an object, was a list"); @@ -1287,7 +1281,7 @@ namespace sibs getLibFiles(parsePlatformConfigStatic(fieldName, fieldValue), releaseStaticLibs); } - void SibsConfig::parseCmake(const StringView &fieldName, const ConfigValue &fieldValue, FileString &cmakeDir, FileString &cmakeArgs) + void SibsConfig::parseCmake(const StringView &fieldName, const ConfigValue &fieldValue, FileString &cmakeDir, std::vector<FileString> &cmakeArgs) { if(fieldName.equals("dir")) { @@ -1314,13 +1308,7 @@ namespace sibs { for(const StringView &arg : fieldValue.asList()) { - bool prependSpace = !cmakeArgs.empty(); - cmakeArgs.reserve(cmakeArgs.size() + 4 + (prependSpace ? 1 : 0) + arg.size); - if(prependSpace) - cmakeArgs += TINYDIR_STRING(" "); - cmakeArgs += TINYDIR_STRING("\"-D"); - cmakeArgs += toFileString(arg); - cmakeArgs += TINYDIR_STRING("\""); + cmakeArgs.push_back(TINYDIR_STRING("-D") + toFileString(arg)); } } else |