#pragma once /*! * @file FileUtil.h * Utility functions for reading and writing files. */ #ifdef _WIN32 #define NOMINMAX #define WIN32_LEAN_AND_MEAN #endif #include "third-party/filesystem.hpp" #ifdef _WIN32 #undef FALSE #endif #include #include #include #include #include "common/common_types.h" namespace fs = ghc::filesystem; namespace file_util { fs::path get_user_home_dir(); fs::path get_user_config_dir(); fs::path get_user_settings_dir(); fs::path get_user_memcard_dir(); fs::path get_jak_project_dir(); bool create_dir_if_needed(const fs::path& path); bool create_dir_if_needed_for_file(const std::string& path); bool create_dir_if_needed_for_file(const fs::path& path); bool setup_project_path(std::optional project_path_override); std::string get_file_path(const std::vector& path); void write_binary_file(const std::string& name, const void* data, size_t size); void write_binary_file(const fs::path& name, const void* data, size_t size); void write_rgba_png(const fs::path& name, void* data, int w, int h); void write_text_file(const std::string& file_name, const std::string& text); void write_text_file(const fs::path& file_name, const std::string& text); std::vector read_binary_file(const std::string& filename); std::vector read_binary_file(const fs::path& filename); std::string read_text_file(const std::string& path); std::string read_text_file(const fs::path& path); bool is_printable_char(char c); std::string combine_path(const std::string& parent, const std::string& child); bool file_exists(const std::string& path); std::string base_name(const std::string& filename); void MakeISOName(char* dst, const char* src); void ISONameFromAnimationName(char* dst, const char* src); void assert_file_exists(const char* path, const char* error_message); bool dgo_header_is_compressed(const std::vector& data); std::vector decompress_dgo(const std::vector& data_in); FILE* open_file(const fs::path& path, const std::string& mode); std::vector find_files_recursively(const fs::path& base_dir, const std::regex& pattern); } // namespace file_util