The Battle for Wesnoth  1.15.12+dev
Classes | Typedefs | Enumerations | Functions | Variables
filesystem Namespace Reference

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...
 
struct  other_version_dir
 

Typedefs

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  name_mode { name_mode::ENTIRE_FILE_PATH, name_mode::FILE_NAME_ONLY }
 
enum  filter_mode { filter_mode::NO_FILTER, filter_mode::SKIP_MEDIA_DIR, filter_mode::SKIP_PBL_FILES }
 
enum  reorder_mode { reorder_mode::DONT_REORDER, reorder_mode::DO_REORDER }
 

Functions

static void push_if_exists (std::vector< std::string > *vec, const bfs::path &file, bool full)
 
static bool error_except_not_found (const error_code &ec)
 
static bool is_directory_internal (const bfs::path &fpath)
 
static bool file_exists (const bfs::path &fpath)
 
static bfs::path get_dir (const bfs::path &dirpath)
 
static bool create_directory_if_missing (const bfs::path &dirpath)
 
static bool create_directory_if_missing_recursive (const bfs::path &dirpath)
 
void get_files_in_dir (const std::string &dir, std::vector< std::string > *files, std::vector< std::string > *dirs=nullptr, name_mode mode=name_mode::FILE_NAME_ONLY, filter_mode filter=filter_mode::NO_FILTER, reorder_mode reorder=reorder_mode::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 (const version_info &version)
 
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 (bfs::path newconfig)
 
void set_user_config_dir (const std::string &newconfigdir)
 
static const bfs::path & get_user_data_path ()
 
std::string get_user_config_dir ()
 
std::string get_user_data_dir ()
 
std::string get_cache_dir ()
 
std::vector< other_version_dirfind_other_version_saves_dirs ()
 Searches for directories containing saves created by other versions of Wesnoth. More...
 
std::string get_cwd ()
 
bool set_cwd (const std::string &dir)
 
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, std::ios_base::openmode mode, 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 bfs::path subtract_path (const bfs::path &full, const bfs::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...
 
std::string get_localized_path (const std::string &file, const std::string &suff="")
 Returns the localized version of the given filename, if it exists. 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)
 
bool is_legal_user_file_name (const std::string &name, bool allow_whitespace=true)
 Returns whether the given filename is a legal name for a user-created file. More...
 
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)
 
std::string get_logs_dir ()
 Returns the path to the permanent log storage directory. More...
 

Variables

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

Typedef Documentation

◆ offset_dir

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

Definition at line 114 of file filesystem_sdl.cpp.

◆ rwops_ptr

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

Definition at line 40 of file filesystem.hpp.

◆ scoped_istream

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

Definition at line 37 of file filesystem.hpp.

◆ scoped_ostream

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

Definition at line 38 of file filesystem.hpp.

Enumeration Type Documentation

◆ filter_mode

Enumerator
NO_FILTER 
SKIP_MEDIA_DIR 
SKIP_PBL_FILES 

Definition at line 54 of file filesystem.hpp.

◆ name_mode

enum filesystem::name_mode
strong
Enumerator
ENTIRE_FILE_PATH 
FILE_NAME_ONLY 

Definition at line 53 of file filesystem.hpp.

◆ reorder_mode

Enumerator
DONT_REORDER 
DO_REORDER 

Definition at line 55 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 1342 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 bfs::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 1083 of file filesystem.cpp.

References game_config::path.

Referenced by create_directory_if_missing_recursive(), set_user_data_dir(), and setup_user_data_dir().

◆ create_directory_if_missing_recursive() [1/2]

static bool filesystem::create_directory_if_missing_recursive ( const bfs::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 1088 of file filesystem.cpp.

References game_config::path.

Referenced by create_directory_if_missing_recursive(), get_cache_dir(), set_user_config_path(), and setup_user_data_dir().

◆ 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 1138 of file filesystem.cpp.

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

Referenced by filesystem::file_tree_checksum::operator!=(), purge_dir(), 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 bfs::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 1098 of file filesystem.cpp.

References game_config::path.

Referenced by get_files_in_dir(), and get_next_filename().

◆ file_modified_time()

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

◆ file_size()

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

◆ find_other_version_saves_dirs()

std::vector< other_version_dir > filesystem::find_other_version_saves_dirs ( )

Searches for directories containing saves created by other versions of Wesnoth.

The directories returned will exist, but might not contain any saves. Changes to the filesystem (by running other versions or by deleting old directories) may change the results returned by the function.

Definition at line 823 of file filesystem.cpp.

References image::exists(), get_user_data_path(), get_version_path_suffix(), game_config::min_savegame_version, game_config::path, version_info::set_major_version(), and game_config::wesnoth_version.

Referenced by gui2::dialogs::game_load::execute(), filesystem::other_version_dir::other_version_dir(), and gui2::dialogs::game_load::set_save_dir_list().

◆ 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 1464 of file filesystem.cpp.

References DBG_FS, get_binary_paths(), is_directory_internal(), is_legal_file(), and game_config::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 1387 of file filesystem.cpp.

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

Referenced by 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 bfs::path filesystem::get_dir ( const bfs::path &  dirpath)
static

◆ get_dir() [2/2]

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

Definition at line 485 of file filesystem.cpp.

References game_config::path.

Referenced by get_cache_dir().

◆ get_exe_dir()

std::string filesystem::get_exe_dir ( )

◆ 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 243 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,
name_mode  mode = name_mode::FILE_NAME_ONLY,
filter_mode  filter = filter_mode::NO_FILTER,
reorder_mode  reorder = reorder_mode::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 1556 of file filesystem.cpp.

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

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

◆ get_intl_dir()

std::string filesystem::get_intl_dir ( )

◆ get_localized_path()

std::string filesystem::get_localized_path ( const std::string &  file,
const std::string &  suff 
)

Returns the localized version of the given filename, if it exists.

Definition at line 1609 of file filesystem.cpp.

References _(), base_name(), directory_name(), file_exists(), and utils::split().

Referenced by sound::load_chunk(), image::load_image_file(), and sound::play_new_music().

◆ get_logs_dir()

std::string filesystem::get_logs_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 490 of file filesystem.cpp.

References file_exists(), and right.

Referenced by gui2::dialogs::make_screenshot().

◆ 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 1577 of file filesystem.cpp.

References game_config::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 183 of file filesystem_common.cpp.

References get_dir(), and get_user_data_dir().

Referenced by gui2::dialogs::make_screenshot().

◆ 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 1539 of file filesystem.cpp.

References get_user_data_path(), partial, game_config::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 bfs::path& filesystem::get_user_data_path ( )
static

◆ get_version_path_suffix() [1/2]

static const std::string filesystem::get_version_path_suffix ( const version_info version)
static

Definition at line 513 of file filesystem.cpp.

References version_info::major_version(), version_info::minor_version(), and s.

◆ get_version_path_suffix() [2/2]

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 198 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 164 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 129 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 89 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 182 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ init_binary_paths()

static void filesystem::init_binary_paths ( )
static

◆ is_bzip2_file()

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

◆ is_compressed_file()

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

◆ is_directory()

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

◆ is_directory_internal()

static bool filesystem::is_directory_internal ( const bfs::path &  fpath)
static

◆ is_gzip_file()

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

◆ is_legal_file()

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

◆ is_legal_user_file_name()

bool filesystem::is_legal_user_file_name ( const std::string &  name,
bool  allow_whitespace = true 
)

Returns whether the given filename is a legal name for a user-created file.

This is meant to be used for any files created by Wesnoth where user input is required, including save files and add-on files for uploading to the add-ons server.

Parameters
nameFile name to verify.
allow_whitespaceWhether whitespace should be allowed.

Definition at line 34 of file filesystem_common.cpp.

References c, and unicode_cast().

Referenced by addon_filename_legal(), savegame::savegame::check_filename(), and is_compressed_file().

◆ 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 1193 of file filesystem.cpp.

References game_config::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 1243 of file filesystem.cpp.

References game_config::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 1205 of file filesystem.cpp.

References p, and game_config::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 1173 of file filesystem.cpp.

References is_root(), p, and game_config::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 1248 of file filesystem.cpp.

References p, and game_config::path.

Referenced by game_launcher::goto_editor(), campaignd::server::load_config(), 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(), run_campaignd(), sanitize_path(), gui2::dialogs::file_dialog::set_path(), set_user_data_dir(), gui2::dialogs::file_dialog::sync_bookmarks_bar(), and campaignd::server::write_config().

◆ ofs_close()

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

Definition at line 206 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 177 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 146 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 101 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 186 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,
std::ios_base::openmode  mode,
bool  create_directory 
)

◆ path_separator()

char filesystem::path_separator ( )

Returns the standard path separator for the current platform.

Definition at line 1200 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 bfs::path &  file,
bool  full 
)
static

Definition at line 236 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 1238 of file filesystem.cpp.

References game_config::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 1591 of file filesystem.cpp.

References normalize_path().

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

◆ set_cwd()

bool filesystem::set_cwd ( const std::string &  dir)

Definition at line 889 of file filesystem.cpp.

References ERR_FS, LOG_FS, and game_config::path.

Referenced by filesystem::other_version_dir::other_version_dir(), and run_campaignd().

◆ set_user_config_dir()

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

Definition at line 746 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 ( bfs::path  newconfig)
static

Definition at line 738 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 bfs::path filesystem::subtract_path ( const bfs::path &  full,
const bfs::path &  prefix 
)
static

Definition at line 1520 of file filesystem.cpp.

References game_config::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 116 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

bfs::path filesystem::cache_dir
static

Definition at line 511 of file filesystem.cpp.

◆ default_blacklist

const blacklist_pattern_list filesystem::default_blacklist
static

Definition at line 89 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 29 of file filesystem_sdl.cpp.

Referenced by make_read_RWops().

◆ user_config_dir

bfs::path filesystem::user_config_dir
static

Definition at line 511 of file filesystem.cpp.

◆ user_data_dir

bfs::path filesystem::user_data_dir
static

Definition at line 511 of file filesystem.cpp.

Referenced by get_user_data_path().

◆ write_type

const uint32_t filesystem::write_type = 8
static

Definition at line 30 of file filesystem_sdl.cpp.

Referenced by make_write_RWops().