The Battle for Wesnoth  1.15.0-dev
Classes | Typedefs | Enumerations | Functions | Variables
filesystem Namespace Reference

The paths manager is responsible for recording the various paths that binary files may be located at. More...

Classes

class  atomic_commit
 Wrapper class that guarantees that file commit atomicity. More...
 
struct  binary_paths_manager
 The paths manager is responsible for recording the various paths that binary files may be located at. More...
 
class  blacklist_pattern_list
 
struct  file_tree_checksum
 
struct  io_exception
 An exception object used when an IO error occurs. More...
 

Typedefs

using fstream_t = fs::ifstream
 
using scoped_istream = std::unique_ptr< std::istream >
 
using scoped_ostream = std::unique_ptr< std::ostream >
 
typedef std::unique_ptr< SDL_RWops, void(*)(SDL_RWops *)> rwops_ptr
 
typedef std::pair< int64_t, std::ios_base::seekdir > offset_dir
 

Enumerations

enum  file_name_option { ENTIRE_FILE_PATH, FILE_NAME_ONLY }
 
enum  file_filter_option { NO_FILTER, SKIP_MEDIA_DIR, SKIP_PBL_FILES }
 
enum  file_reorder_option { DONT_REORDER, DO_REORDER }
 

Functions

void init ()
 Some tasks to run on startup. More...
 
static void push_if_exists (std::vector< std::string > *vec, const fs::path &file, bool full)
 
static bool error_except_not_found (const error_code &ec)
 
static bool is_directory_internal (const fs::path &fpath)
 
static bool file_exists (const fs::path &fpath)
 
static fs::path get_dir (const fs::path &dirpath)
 
static bool create_directory_if_missing (const fs::path &dirpath)
 
static bool create_directory_if_missing_recursive (const fs::path &dirpath)
 
void get_files_in_dir (const std::string &dir, std::vector< std::string > *files, std::vector< std::string > *dirs=nullptr, file_name_option mode=FILE_NAME_ONLY, file_filter_option filter=NO_FILTER, file_reorder_option reorder=DONT_REORDER, file_tree_checksum *checksum=nullptr)
 Populates 'files' with all the files and 'dirs' with all the directories in dir. More...
 
std::string get_dir (const std::string &dir)
 
std::string get_next_filename (const std::string &name, const std::string &extension)
 Get the next free filename using "name + number (3 digits) + extension" maximum 1000 files then start always giving 999. More...
 
static const std::string & get_version_path_suffix ()
 
static void setup_user_data_dir ()
 
void set_user_data_dir (std::string newprefdir)
 
static void set_user_config_path (fs::path newconfig)
 
void set_user_config_dir (const std::string &newconfigdir)
 
static const fs::pathget_user_data_path ()
 
std::string get_user_config_dir ()
 
std::string get_user_data_dir ()
 
std::string get_cache_dir ()
 
std::string get_cwd ()
 
std::string get_exe_dir ()
 
bool make_directory (const std::string &dirname)
 
bool delete_directory (const std::string &dirname, const bool keep_pbl)
 
bool delete_file (const std::string &filename)
 
std::string read_file (const std::string &fname)
 Basic disk I/O - read file. More...
 
filesystem::scoped_istream istream_file (const std::string &fname, bool treat_failure_as_error)
 
filesystem::scoped_ostream ostream_file (const std::string &fname, bool create_directory)
 
void write_file (const std::string &fname, const std::string &data)
 Throws io_exception if an error occurs. More...
 
bool create_directory_if_missing (const std::string &dirname)
 Creates a directory if it does not exist already. More...
 
bool create_directory_if_missing_recursive (const std::string &dirname)
 Creates a recursive directory tree if it does not exist already. More...
 
bool is_directory (const std::string &fname)
 Returns true if the given file is a directory. More...
 
bool file_exists (const std::string &name)
 Returns true if a file or directory with such name already exists. More...
 
std::time_t file_modified_time (const std::string &fname)
 Get the modification time of a file. More...
 
bool is_gzip_file (const std::string &filename)
 Returns true if the file ends with '.gz'. More...
 
bool is_bzip2_file (const std::string &filename)
 Returns true if the file ends with '.bz2'. More...
 
int file_size (const std::string &fname)
 Returns the size of a file, or -1 if the file doesn't exist. More...
 
int dir_size (const std::string &path)
 Returns the sum of the sizes of the files contained in a directory. More...
 
std::string base_name (const std::string &file, const bool remove_extension=false)
 Returns the base filename of a file, with directory name stripped. More...
 
std::string directory_name (const std::string &file)
 Returns the directory name of a file, with filename stripped. More...
 
std::string nearest_extant_parent (const std::string &file)
 Finds the nearest parent in existence for a file or directory. More...
 
bool is_path_sep (char c)
 Returns whether c is a path separator. More...
 
char path_separator ()
 Returns the standard path separator for the current platform. More...
 
bool is_root (const std::string &path)
 Returns whether the path is the root of the file hierarchy. More...
 
std::string root_name (const std::string &path)
 Returns the name of the root device if included in the given path. More...
 
bool is_relative (const std::string &path)
 Returns whether the path seems to be relative. More...
 
std::string normalize_path (const std::string &path, bool normalize_separators=false, bool resolve_dot_entries=false)
 Returns the absolute path of a file. More...
 
static void init_binary_paths ()
 
void clear_binary_paths_cache ()
 
static bool is_legal_file (const std::string &filename_str)
 
const std::vector< std::string > & get_binary_paths (const std::string &type)
 Returns a vector with all possible paths to a given type of binary, e.g. More...
 
std::string get_binary_file_location (const std::string &type, const std::string &filename)
 Returns a complete path to the actual file of a given type or an empty string if the file isn't present. More...
 
std::string get_binary_dir_location (const std::string &type, const std::string &filename)
 Returns a complete path to the actual directory of a given type or an empty string if the directory isn't present. More...
 
std::string get_wml_location (const std::string &filename, const std::string &current_dir=std::string())
 Returns a complete path to the actual WML file or directory or an empty string if the file isn't present. More...
 
static fs::path subtract_path (const fs::path &full, const fs::path &prefix)
 
std::string get_short_wml_path (const std::string &filename)
 Returns a short path to filename, skipping the (user) data directory. More...
 
std::string get_independent_image_path (const std::string &filename)
 Returns an image path to filename for binary path-independent use in saved games. More...
 
std::string get_program_invocation (const std::string &program_name)
 Returns the appropriate invocation for a Wesnoth-related binary, assuming that it is located in the same directory as the running wesnoth binary. More...
 
std::string sanitize_path (const std::string &path)
 Sanitizes a path to remove references to the user's name. More...
 
rwops_ptr make_read_RWops (const std::string &path)
 
rwops_ptr make_write_RWops (const std::string &path)
 
std::string get_prefs_file ()
 
std::string get_credentials_file ()
 
std::string get_default_prefs_file ()
 
std::string get_save_index_file ()
 
std::string get_saves_dir ()
 
std::string get_intl_dir ()
 
std::string get_screenshot_dir ()
 
std::string get_addons_dir ()
 
bool looks_like_pbl (const std::string &file)
 
std::string read_map (const std::string &name)
 
bool is_compressed_file (const std::string &filename)
 
const file_tree_checksumdata_tree_checksum (bool reset=false)
 Get the time at which the data/ tree was last modified at. More...
 
bool ends_with (const std::string &str, const std::string &suffix)
 
static void get_file_tree_checksum_internal (const std::string &path, file_tree_checksum &res)
 
static int64_t ifs_size (struct SDL_RWops *context)
 
static int64_t ofs_size (struct SDL_RWops *context)
 
static int64_t SDLCALL ifs_seek (struct SDL_RWops *context, int64_t offset, int whence)
 
static int64_t SDLCALL ofs_seek (struct SDL_RWops *context, int64_t offset, int whence)
 
static std::size_t SDLCALL ifs_read (struct SDL_RWops *context, void *ptr, std::size_t size, std::size_t maxnum)
 
static std::size_t SDLCALL ofs_read (struct SDL_RWops *context, void *ptr, std::size_t size, std::size_t maxnum)
 
static std::size_t SDLCALL ifs_write (struct SDL_RWops *context, const void *ptr, std::size_t size, std::size_t num)
 
static std::size_t SDLCALL ofs_write (struct SDL_RWops *context, const void *ptr, std::size_t size, std::size_t num)
 
static int SDLCALL ifs_close (struct SDL_RWops *context)
 
static int SDLCALL ofs_close (struct SDL_RWops *context)
 
static offset_dir translate_seekdir (int64_t offset, int whence)
 

Variables

static fs::path user_data_dir
 
static fs::path user_config_dir
 
static fs::path cache_dir
 
static const blacklist_pattern_list default_blacklist
 
static const uint32_t read_type = 7
 
static const uint32_t write_type = 8
 

Detailed Description

The paths manager is responsible for recording the various paths that binary files may be located at.

It should be passed a config object which holds binary path information. This is in the format

*    [binary_path]
*      path=<path>
*    [/binary_path]
*  Binaries will be searched for in [wesnoth-path]/data/<path>/images/
*

Typedef Documentation

◆ fstream_t

using filesystem::fstream_t = typedef fs::ifstream

Definition at line 86 of file filesystem.cpp.

◆ offset_dir

typedef std::pair<int64_t, std::ios_base::seekdir> filesystem::offset_dir

Definition at line 113 of file filesystem_sdl.cpp.

◆ rwops_ptr

typedef std::unique_ptr<SDL_RWops, void(*)(SDL_RWops*)> filesystem::rwops_ptr

Definition at line 42 of file filesystem.hpp.

◆ scoped_istream

using filesystem::scoped_istream = typedef std::unique_ptr<std::istream>

Definition at line 39 of file filesystem.hpp.

◆ scoped_ostream

using filesystem::scoped_ostream = typedef std::unique_ptr<std::ostream>

Definition at line 40 of file filesystem.hpp.

Enumeration Type Documentation

◆ file_filter_option

Enumerator
NO_FILTER 
SKIP_MEDIA_DIR 
SKIP_PBL_FILES 

Definition at line 56 of file filesystem.hpp.

◆ file_name_option

Enumerator
ENTIRE_FILE_PATH 
FILE_NAME_ONLY 

Definition at line 55 of file filesystem.hpp.

◆ file_reorder_option

Enumerator
DONT_REORDER 
DO_REORDER 

Definition at line 57 of file filesystem.hpp.

Function Documentation

◆ base_name()

std::string filesystem::base_name ( const std::string &  file,
const bool  remove_extension = false 
)

◆ clear_binary_paths_cache()

void filesystem::clear_binary_paths_cache ( )

Definition at line 1233 of file filesystem.cpp.

Referenced by game_config_manager::reload_changed_game_config().

◆ create_directory_if_missing() [1/2]

static bool filesystem::create_directory_if_missing ( const fs::path dirpath)
static

◆ create_directory_if_missing() [2/2]

bool filesystem::create_directory_if_missing ( const std::string &  dirname)

Creates a directory if it does not exist already.

Parameters
dirnamePath to directory. All parents should exist.
Returns
True if the directory exists or could be successfully created; false otherwise.

Definition at line 974 of file filesystem.cpp.

References create_directory_if_missing(), and path.

◆ create_directory_if_missing_recursive() [1/2]

static bool filesystem::create_directory_if_missing_recursive ( const fs::path dirpath)
static

◆ create_directory_if_missing_recursive() [2/2]

bool filesystem::create_directory_if_missing_recursive ( const std::string &  dirname)

Creates a recursive directory tree if it does not exist already.

Parameters
dirnameFull path of target directory. Non existing parents will be created
Returns
True if the directory exists or could be successfully created; false otherwise.

Definition at line 979 of file filesystem.cpp.

References create_directory_if_missing_recursive(), and path.

◆ data_tree_checksum()

const file_tree_checksum & filesystem::data_tree_checksum ( bool  reset = false)

◆ delete_directory()

bool filesystem::delete_directory ( const std::string &  dirname,
const bool  keep_pbl 
)

◆ delete_file()

bool filesystem::delete_file ( const std::string &  filename)

◆ dir_size()

int filesystem::dir_size ( const std::string &  path)

Returns the sum of the sizes of the files contained in a directory.

Definition at line 1029 of file filesystem.cpp.

References file_size(), i, LOG_FS, p, and path.

Referenced by filesystem::file_tree_checksum::operator!=(), and gui2::dialogs::game_cache_options::update_cache_size_display().

◆ directory_name()

std::string filesystem::directory_name ( const std::string &  file)

◆ ends_with()

bool filesystem::ends_with ( const std::string &  str,
const std::string &  suffix 
)

◆ error_except_not_found()

static bool filesystem::error_except_not_found ( const error_code &  ec)
inlinestatic

◆ file_exists() [1/2]

static bool filesystem::file_exists ( const fs::path fpath)
static

◆ file_exists() [2/2]

bool filesystem::file_exists ( const std::string &  name)

Returns true if a file or directory with such name already exists.

Definition at line 989 of file filesystem.cpp.

References file_exists(), and path.

◆ file_modified_time()

std::time_t filesystem::file_modified_time ( const std::string &  fname)

Get the modification time of a file.

Definition at line 994 of file filesystem.cpp.

References LOG_FS, and path.

Referenced by savegame::create_save_info::operator()(), and savegame::save_index_class::rebuild().

◆ file_size()

int filesystem::file_size ( const std::string &  fname)

◆ get_addons_dir()

std::string filesystem::get_addons_dir ( )

◆ get_binary_dir_location()

std::string filesystem::get_binary_dir_location ( const std::string &  type,
const std::string &  filename 
)

Returns a complete path to the actual directory of a given type or an empty string if the directory isn't present.

Definition at line 1349 of file filesystem.cpp.

References DBG_FS, get_binary_paths(), is_directory_internal(), is_legal_file(), and path.

Referenced by BOOST_AUTO_TEST_CASE(), and init_textdomains().

◆ get_binary_file_location()

std::string filesystem::get_binary_file_location ( const std::string &  type,
const std::string &  filename 
)

◆ get_binary_paths()

const std::vector< std::string > & filesystem::get_binary_paths ( const std::string &  type)

Returns a vector with all possible paths to a given type of binary, e.g.

'images', 'sounds', etc,

Definition at line 1278 of file filesystem.cpp.

References dummy, ERR_FS, get_user_data_dir(), init_binary_paths(), game_config::path, and path.

Referenced by image::build_spritesheet_from(), get_binary_dir_location(), get_binary_file_location(), font::manager::manager(), image::precache_file_existence(), and font::manager::~manager().

◆ get_cache_dir()

std::string filesystem::get_cache_dir ( )

◆ get_credentials_file()

std::string filesystem::get_credentials_file ( )

◆ get_cwd()

std::string filesystem::get_cwd ( )

◆ get_default_prefs_file()

std::string filesystem::get_default_prefs_file ( )

◆ get_dir() [1/2]

static fs::path filesystem::get_dir ( const fs::path dirpath)
static

◆ get_dir() [2/2]

std::string filesystem::get_dir ( const std::string &  dir)

Definition at line 522 of file filesystem.cpp.

References get_dir(), and path.

◆ get_exe_dir()

std::string filesystem::get_exe_dir ( )

Definition at line 795 of file filesystem.cpp.

References image::exists(), get_cwd(), and path.

Referenced by desktop::game_paths(), main(), and preferences::show_wesnothd_server_search().

◆ get_file_tree_checksum_internal()

static void filesystem::get_file_tree_checksum_internal ( const std::string &  path,
file_tree_checksum res 
)
static

Definition at line 155 of file filesystem_common.cpp.

References DONT_REORDER, ENTIRE_FILE_PATH, get_files_in_dir(), and SKIP_MEDIA_DIR.

Referenced by data_tree_checksum().

◆ get_files_in_dir()

void filesystem::get_files_in_dir ( const std::string &  dir,
std::vector< std::string > *  files,
std::vector< std::string > *  dirs = nullptr,
file_name_option  mode = FILE_NAME_ONLY,
file_filter_option  filter = NO_FILTER,
file_reorder_option  reorder = DONT_REORDER,
file_tree_checksum checksum = nullptr 
)

◆ get_independent_image_path()

std::string filesystem::get_independent_image_path ( const std::string &  filename)

Returns an image path to filename for binary path-independent use in saved games.

Example: units/konrad-fighter.png -> data/campaigns/Heir_To_The_Throne/images/units/konrad-fighter.png

Definition at line 1441 of file filesystem.cpp.

References get_binary_file_location(), get_user_data_path(), game_config::path, path, and subtract_path().

Referenced by BOOST_AUTO_TEST_CASE(), gui2::dialogs::game_load::display_savegame(), and savegame::extract_summary_from_config().

◆ get_intl_dir()

std::string filesystem::get_intl_dir ( )

◆ get_next_filename()

std::string filesystem::get_next_filename ( const std::string &  name,
const std::string &  extension 
)

Get the next free filename using "name + number (3 digits) + extension" maximum 1000 files then start always giving 999.

Definition at line 527 of file filesystem.cpp.

References file_exists(), name, right, and t_string::str().

◆ get_prefs_file()

std::string filesystem::get_prefs_file ( )

◆ get_program_invocation()

std::string filesystem::get_program_invocation ( const std::string &  program_name)

Returns the appropriate invocation for a Wesnoth-related binary, assuming that it is located in the same directory as the running wesnoth binary.

This is just a string-transformation based on argv[0], so the returned program is not guaranteed to actually exist. '-debug' variants are handled correctly.

Definition at line 1462 of file filesystem.cpp.

References path, and game_config::wesnoth_program_dir.

Referenced by game_launcher::start_wesnothd().

◆ get_save_index_file()

std::string filesystem::get_save_index_file ( )

◆ get_saves_dir()

std::string filesystem::get_saves_dir ( )

◆ get_screenshot_dir()

std::string filesystem::get_screenshot_dir ( )

Definition at line 98 of file filesystem_common.cpp.

References get_dir(), and get_user_data_dir().

◆ get_short_wml_path()

std::string filesystem::get_short_wml_path ( const std::string &  filename)

Returns a short path to filename, skipping the (user) data directory.

Definition at line 1424 of file filesystem.cpp.

References get_user_data_path(), game_config::path, path, and subtract_path().

Referenced by preprocessor_file::init(), and editor::map_context::map_context().

◆ get_user_config_dir()

std::string filesystem::get_user_config_dir ( )

◆ get_user_data_dir()

std::string filesystem::get_user_data_dir ( )

◆ get_user_data_path()

static const fs::path& filesystem::get_user_data_path ( )
static

◆ get_version_path_suffix()

static const std::string& filesystem::get_version_path_suffix ( )
static

◆ get_wml_location()

std::string filesystem::get_wml_location ( const std::string &  filename,
const std::string &  current_dir 
)

◆ ifs_close()

static int SDLCALL filesystem::ifs_close ( struct SDL_RWops *  context)
static

Definition at line 197 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ ifs_read()

static std::size_t SDLCALL filesystem::ifs_read ( struct SDL_RWops *  context,
void *  ptr,
std::size_t  size,
std::size_t  maxnum 
)
static

Definition at line 163 of file filesystem_sdl.cpp.

References utf8::size().

Referenced by make_read_RWops().

◆ ifs_seek()

static int64_t SDLCALL filesystem::ifs_seek ( struct SDL_RWops *  context,
int64_t  offset,
int  whence 
)
static

Definition at line 128 of file filesystem_sdl.cpp.

References translate_seekdir().

Referenced by make_read_RWops().

◆ ifs_size()

static int64_t filesystem::ifs_size ( struct SDL_RWops *  context)
static

Definition at line 88 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ ifs_write()

static std::size_t SDLCALL filesystem::ifs_write ( struct SDL_RWops *  context,
const void *  ptr,
std::size_t  size,
std::size_t  num 
)
static

Definition at line 181 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ init()

void filesystem::init ( )

Some tasks to run on startup.

Definition at line 259 of file filesystem.cpp.

Referenced by main().

◆ init_binary_paths()

static void filesystem::init_binary_paths ( )
static

◆ is_bzip2_file()

bool filesystem::is_bzip2_file ( const std::string &  filename)

Returns true if the file ends with '.bz2'.

Definition at line 1010 of file filesystem.cpp.

References path.

Referenced by BOOST_AUTO_TEST_CASE(), is_compressed_file(), process_command_args(), and savegame::read_save_file().

◆ is_compressed_file()

bool filesystem::is_compressed_file ( const std::string &  filename)
inline

Definition at line 230 of file filesystem.hpp.

References is_bzip2_file(), and is_gzip_file().

Referenced by BOOST_AUTO_TEST_CASE(), and savegame::savegame::check_filename().

◆ is_directory()

bool filesystem::is_directory ( const std::string &  fname)

◆ is_directory_internal()

static bool filesystem::is_directory_internal ( const fs::path fpath)
static

◆ is_gzip_file()

bool filesystem::is_gzip_file ( const std::string &  filename)

Returns true if the file ends with '.gz'.

Definition at line 1005 of file filesystem.cpp.

References path.

Referenced by BOOST_AUTO_TEST_CASE(), is_compressed_file(), process_command_args(), and savegame::read_save_file().

◆ is_legal_file()

static bool filesystem::is_legal_file ( const std::string &  filename_str)
static

◆ is_path_sep()

bool filesystem::is_path_sep ( char  c)

Returns whether c is a path separator.

Note
/ is always a path separator. Additionally, on Windows \ is a path separator as well.

Definition at line 1084 of file filesystem.cpp.

References path, and s.

Referenced by filesystem::file_tree_checksum::operator!=().

◆ is_relative()

bool filesystem::is_relative ( const std::string &  path)

Returns whether the path seems to be relative.

Definition at line 1134 of file filesystem.cpp.

References path.

Referenced by BOOST_AUTO_TEST_CASE(), get_files_in_dir(), filesystem::file_tree_checksum::operator!=(), and gui2::dialogs::file_dialog::register_new_selection().

◆ is_root()

bool filesystem::is_root ( const std::string &  path)

Returns whether the path is the root of the file hierarchy.

Note
This function is unreliable for paths that do not exist – it will always return false for those.

Definition at line 1096 of file filesystem.cpp.

References p, and path.

Referenced by BOOST_AUTO_TEST_CASE(), gui2::dialogs::file_dialog::get_filelist_selection(), nearest_extant_parent(), filesystem::file_tree_checksum::operator!=(), gui2::dialogs::file_dialog::refresh_fileview(), and gui2::dialogs::file_dialog::register_new_selection().

◆ istream_file()

filesystem::scoped_istream filesystem::istream_file ( const std::string &  fname,
bool  treat_failure_as_error 
)

◆ looks_like_pbl()

bool filesystem::looks_like_pbl ( const std::string &  file)

◆ make_directory()

bool filesystem::make_directory ( const std::string &  dirname)

◆ make_read_RWops()

rwops_ptr filesystem::make_read_RWops ( const std::string &  path)

◆ make_write_RWops()

rwops_ptr filesystem::make_write_RWops ( const std::string &  path)

◆ nearest_extant_parent()

std::string filesystem::nearest_extant_parent ( const std::string &  file)

Finds the nearest parent in existence for a file or directory.

Note
The file's own existence is not checked.
Returns
An absolute path to the closest parent of the given path, or an empty string if none could be found. While on POSIX platforms this cannot happen (unless the original path was already empty), on Windows it might be the case that the original path refers to a drive letter or network share that does not exist.

Definition at line 1064 of file filesystem.cpp.

References is_root(), p, and path.

Referenced by BOOST_AUTO_TEST_CASE(), filesystem::file_tree_checksum::operator!=(), and gui2::dialogs::file_dialog::set_path().

◆ normalize_path()

std::string filesystem::normalize_path ( const std::string &  path,
bool  normalize_separators = false,
bool  resolve_dot_entries = false 
)

Returns the absolute path of a file.

Parameters
pathOriginal path.
normalize_separatorsWhether to substitute path separators with the platform's preferred format.
resolve_dot_entriesWhether to resolve . and .. directory entries. This requires path to refer to a valid existing object.
Returns
An absolute path – that is, a path that is independent of the current working directory for the process. If resolve_dot_entries is set to true, the returned path has . and .. components resolved; however, if resolution fails because a component does not exist, an empty string is returned instead.

Definition at line 1139 of file filesystem.cpp.

References p, and path.

Referenced by game_launcher::goto_editor(), main(), filesystem::file_tree_checksum::operator!=(), gui2::dialogs::file_dialog::path(), gui2::dialogs::game_version::pre_show(), process_command_args(), gui2::dialogs::file_dialog::register_new_selection(), sanitize_path(), gui2::dialogs::file_dialog::set_path(), set_user_data_dir(), and gui2::dialogs::file_dialog::sync_bookmarks_bar().

◆ ofs_close()

static int SDLCALL filesystem::ofs_close ( struct SDL_RWops *  context)
static

Definition at line 205 of file filesystem_sdl.cpp.

Referenced by make_write_RWops().

◆ ofs_read()

static std::size_t SDLCALL filesystem::ofs_read ( struct SDL_RWops *  context,
void *  ptr,
std::size_t  size,
std::size_t  maxnum 
)
static

Definition at line 176 of file filesystem_sdl.cpp.

Referenced by make_write_RWops().

◆ ofs_seek()

static int64_t SDLCALL filesystem::ofs_seek ( struct SDL_RWops *  context,
int64_t  offset,
int  whence 
)
static

Definition at line 145 of file filesystem_sdl.cpp.

References translate_seekdir().

Referenced by make_write_RWops().

◆ ofs_size()

static int64_t filesystem::ofs_size ( struct SDL_RWops *  context)
static

Definition at line 100 of file filesystem_sdl.cpp.

Referenced by make_write_RWops().

◆ ofs_write()

static std::size_t SDLCALL filesystem::ofs_write ( struct SDL_RWops *  context,
const void *  ptr,
std::size_t  size,
std::size_t  num 
)
static

Definition at line 185 of file filesystem_sdl.cpp.

References utf8::size().

Referenced by make_write_RWops().

◆ ostream_file()

filesystem::scoped_ostream filesystem::ostream_file ( const std::string &  fname,
bool  create_directory 
)

◆ path_separator()

char filesystem::path_separator ( )

Returns the standard path separator for the current platform.

Definition at line 1091 of file filesystem.cpp.

Referenced by filesystem::file_tree_checksum::operator!=().

◆ push_if_exists()

static void filesystem::push_if_exists ( std::vector< std::string > *  vec,
const fs::path file,
bool  full 
)
static

Definition at line 269 of file filesystem.cpp.

Referenced by get_files_in_dir().

◆ read_file()

std::string filesystem::read_file ( const std::string &  fname)

◆ read_map()

std::string filesystem::read_map ( const std::string &  name)

◆ root_name()

std::string filesystem::root_name ( const std::string &  path)

Returns the name of the root device if included in the given path.

This only properly makes sense on Windows with paths containing a drive letter or UNC at the start – otherwise, it will return the empty string. To ensure that a suitable root name can be found you might want to use normalize_path() first with resolve_dot_entries set to true.

Definition at line 1129 of file filesystem.cpp.

References path.

Referenced by filesystem::file_tree_checksum::operator!=(), and gui2::dialogs::file_dialog::register_new_selection().

◆ sanitize_path()

std::string filesystem::sanitize_path ( const std::string &  path)

Sanitizes a path to remove references to the user's name.

Definition at line 1476 of file filesystem.cpp.

References normalize_path().

Referenced by game_config::full_build_report(), game_launcher::game_launcher(), main(), and filesystem::file_tree_checksum::operator!=().

◆ set_user_config_dir()

void filesystem::set_user_config_dir ( const std::string &  newconfigdir)

Definition at line 706 of file filesystem.cpp.

References set_user_config_path().

Referenced by process_command_args().

◆ set_user_config_path()

static void filesystem::set_user_config_path ( fs::path  newconfig)
static

Definition at line 698 of file filesystem.cpp.

References create_directory_if_missing_recursive(), and ERR_FS.

Referenced by get_user_config_dir(), and set_user_config_dir().

◆ set_user_data_dir()

void filesystem::set_user_data_dir ( std::string  newprefdir)

◆ setup_user_data_dir()

static void filesystem::setup_user_data_dir ( )
static

◆ subtract_path()

static fs::path filesystem::subtract_path ( const fs::path full,
const fs::path prefix 
)
static

Definition at line 1405 of file filesystem.cpp.

References path.

Referenced by get_independent_image_path(), and get_short_wml_path().

◆ translate_seekdir()

static offset_dir filesystem::translate_seekdir ( int64_t  offset,
int  whence 
)
static

Definition at line 115 of file filesystem_sdl.cpp.

Referenced by ifs_seek(), and ofs_seek().

◆ write_file()

void filesystem::write_file ( const std::string &  fname,
const std::string &  data 
)

Variable Documentation

◆ cache_dir

fs::path filesystem::cache_dir
static

Definition at line 548 of file filesystem.cpp.

◆ default_blacklist

const blacklist_pattern_list filesystem::default_blacklist
static

Definition at line 99 of file filesystem.hpp.

Referenced by lua_fileops::intf_read_file(), is_legal_file(), and read_ignore_patterns().

◆ read_type

const uint32_t filesystem::read_type = 7
static

Definition at line 28 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ user_config_dir

fs::path filesystem::user_config_dir
static

Definition at line 548 of file filesystem.cpp.

◆ user_data_dir

fs::path filesystem::user_data_dir
static

Definition at line 548 of file filesystem.cpp.

Referenced by get_user_data_path().

◆ write_type

const uint32_t filesystem::write_type = 8
static

Definition at line 29 of file filesystem_sdl.cpp.

Referenced by make_write_RWops().