diff options
Diffstat (limited to 'kernel/yosys.cc')
-rw-r--r-- | kernel/yosys.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/kernel/yosys.cc b/kernel/yosys.cc index 17f6847b5..08fee9741 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -37,11 +37,13 @@ # include <unistd.h> # include <dirent.h> # include <sys/stat.h> +# include <glob.h> #else # include <unistd.h> # include <dirent.h> # include <sys/types.h> # include <sys/stat.h> +# include <glob.h> #endif #include <limits.h> @@ -547,6 +549,29 @@ const char *create_prompt(RTLIL::Design *design, int recursion_counter) return buffer; } +std::vector<std::string> glob_filename(const std::string &filename_pattern) +{ + std::vector<std::string> results; + +#ifdef _WIN32 + results.push_back(filename_pattern); +#else + glob_t globbuf; + + int err = glob(filename_pattern.c_str(), 0, NULL, &globbuf); + + if(err == 0) { + for (size_t i = 0; i < globbuf.gl_pathc; i++) + results.push_back(globbuf.gl_pathv[i]); + globfree(&globbuf); + } else { + results.push_back(filename_pattern); + } +#endif + + return results; +} + void rewrite_filename(std::string &filename) { if (filename.substr(0, 1) == "\"" && filename.substr(GetSize(filename)-1) == "\"") |