#pragma once #include #include #include #include namespace fileutils { // file existence bool file_exists(LPCSTR szPath); bool file_exists(LPCWSTR szPath); bool file_exists(const std::string &file_path); bool file_exists(const std::filesystem::path &file_path); // file headers bool verify_header_pe(const std::filesystem::path &file_path); // versions bool version_pe(const std::filesystem::path &file_path, char *ver); // directories bool dir_exists(const std::filesystem::path &dir_path); bool dir_create(const std::filesystem::path &dir_path); bool dir_create_log(const std::string_view &module, const std::filesystem::path &dir_path); bool dir_create_recursive(const std::filesystem::path &dir_path); bool dir_create_recursive_log(const std::string_view &module, const std::filesystem::path &dir_path); // IO bool text_write(const std::filesystem::path &file_path, std::string text); std::string text_read(const std::filesystem::path &file_path); bool bin_write(const std::filesystem::path &path, uint8_t *data, size_t len); std::vector *bin_read(const std::filesystem::path &path); std::filesystem::path get_config_file_path(const std::string module, const std::string filename, bool* file_exists=nullptr); bool write_config_file(const std::string_view &module, const std::filesystem::path path, std::string text); std::string basename(std::string_view path); }