diff options
author | dec05eba <dec05eba@protonmail.com> | 2020-03-28 07:15:16 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-06 07:39:58 +0200 |
commit | c6e8fe8125f8900f3019716aa1cfbf18ff8264bd (patch) | |
tree | 8eefe81c1cffe59cf6aeea75741f6f92c3edcb40 /src/FileUtil.cpp | |
parent | 615093ac7f3f647855b60b3a65352140bc44b378 (diff) |
Add support for absolute paths in include_dirs config
Diffstat (limited to 'src/FileUtil.cpp')
-rw-r--r-- | src/FileUtil.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/FileUtil.cpp b/src/FileUtil.cpp index a03161f..1fd86d6 100644 --- a/src/FileUtil.cpp +++ b/src/FileUtil.cpp @@ -178,6 +178,27 @@ namespace sibs } #endif +#if OS_FAMILY == OS_FAMILY_POSIX + bool isPathAbsolute(const std::string &path) + { + return !path.empty() && path[0] == '/'; + } +#else + static bool isAlpha(char c) + { + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + } + + bool isPathAbsolute(const std::string &path) + { + if(path.size() >= 3 && isAlpha(path[0]) && path[1] == ':' && (path[2] == '\\' || path[2] == '/')) + return true; + else if(path.size() >= 4 && memcmp(path.data(), "\\\\?\\", 4) == 0) + return true; + return false; + } +#endif + // TODO: Handle failure (directory doesn't exist, no permission etc) void walkDir(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc) { |