mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
41d0dce6e9
## Link to GitHub Issue, if one exists n/a ## Description of change For JSON config files of the following features: * patch manager * screen resize * IIDX camera hook * card manager when saving a new file, store them in %appdata%\spice2x instead of %appdata%. On load: 1. If the JSON file exists in %appdata%\spice2x, use that (new path) 1. If the JSON file exists in %appdata%, continue to use that (legacy path) It's common for people to have mixed versions of spicetools/spice2x so we'll continue to read from the %appdata% root if the files are there, but with a preference for the new path. We will not forcibly move files. spicetools.xml will continue to live in the %appdata% root. Moving this will confuse a lot of people, so I'm avoiding this. Also, this fixes `-patchcfgpath` and `-resizecfgpath` to create directories as needed (previously the parent directory must have existed first) ## Testing Tested - * existing config files are continued to be read from %appdata% * new files get created in %appdata%\spice2x\... (both in spicecfg and in overlay) * can provide custom path for `-patchcfgpath` `-resizecfgpath` and observe directories + file created in custom path, try absolute or local relative paths
40 lines
1.5 KiB
C++
40 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <windows.h>
|
|
|
|
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);
|
|
void dir_scan(const std::string &path, std::vector<std::string> &vec, bool recursive);
|
|
|
|
// 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<uint8_t> *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);
|
|
}
|