diff options
Diffstat (limited to 'src/utils/cpp/path.hpp')
-rw-r--r-- | src/utils/cpp/path.hpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/utils/cpp/path.hpp b/src/utils/cpp/path.hpp index 26d25e50..ba3d125b 100644 --- a/src/utils/cpp/path.hpp +++ b/src/utils/cpp/path.hpp @@ -16,6 +16,7 @@ #define INCLUDED_SRC_UTILS_CPP_PATH_HPP #include <filesystem> +#include <string> [[nodiscard]] static inline auto ToNormalPath( std::filesystem::path const& p) noexcept -> std::filesystem::path { @@ -58,4 +59,15 @@ return PathIsNonUpwards(applied_to.parent_path() / path); } +/// \brief Predicate if a given string is a valid filename. +[[nodiscard]] static inline auto IsValidFileName(const std::string& s) -> bool { + if (s.find_first_of("/\0") != std::string::npos) { + return false; + } + if (s.empty() or s == "." or s == "..") { + return false; + } + return true; +} + #endif // INCLUDED_SRC_UTILS_CPP_PATH_HPP |