| #include <sys/wait.h> | #include <sys/wait.h> | ||||
| #include <stdexcept> | #include <stdexcept> | ||||
| #include <system_error> | #include <system_error> | ||||
| #include <unordered_set> | |||||
| #include "logger.h" | #include "logger.h" | ||||
| #include "globals.h" | #include "globals.h" | ||||
| } | } | ||||
| void mkdirp(const std::string &path) { | void mkdirp(const std::string &path) { | ||||
| static thread_local std::unordered_set<std::string> set; | |||||
| auto res = set.emplace(path); | |||||
| if (!res.second) | |||||
| return; | |||||
| // TODO: Implement this in C++ instead | // TODO: Implement this in C++ instead | ||||
| std::vector<std::string> argv; | std::vector<std::string> argv; | ||||
| argv.push_back("mkdir"); | argv.push_back("mkdir"); |