Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
fs.h File Reference
#include <tinyformat.h>
#include <cstdio>
#include <filesystem>
#include <functional>
#include <iomanip>
#include <ios>
#include <ostream>
#include <string>
#include <string_view>
#include <system_error>
#include <type_traits>
#include <utility>
Include dependency graph for fs.h:

Go to the source code of this file.

Classes

class  fs::path
 Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path::string() method, which have unsafe and unpredictable behavior on Windows (see implementation note in PathToString for details). More...
class  fsbridge::FileLock

Namespaces

namespace  fs
 Filesystem operations and types.
namespace  fsbridge
 Bridge operations to C stdio.
namespace  tinyformat

Typedefs

using fsbridge::FopenFn = std::function<FILE*(const fs::path&, const char*)>

Functions

static path u8path (std::string_view utf8_str)
static path absolute (const path &p)
static bool exists (const path &p)
static auto quoted (const std::string &s)
static path operator/ (path p1, const path &p2)
static path operator/ (path p1, const char *p2)
static path operator+ (path p1, const char *p2)
static path operator+ (path p1, path::value_type p2)
template<typename T>
static path operator/ (path p1, T p2)=delete
template<typename T>
static path operator+ (path p1, T p2)=delete
static bool copy_file (const path &from, const path &to, copy_options options)
static std::string PathToString (const path &path)
 Convert path object to a byte string.
static path PathFromString (const std::string &string)
 Convert byte string to path object.
FILE * fsbridge::fopen (const fs::path &p, const char *mode)
fs::path fsbridge::AbsPathJoin (const fs::path &base, const fs::path &path)
 Helper function for joining two paths.
template<>
void tinyformat::formatValue (std::ostream &, const char *, const char *, int, const std::filesystem::path &)=delete
template<>
void tinyformat::formatValue (std::ostream &, const char *, const char *, int, const fs::path &)=delete

Function Documentation

◆ absolute()

path fs::absolute ( const path & p)
inlinestatic

Definition at line 88 of file fs.h.

Here is the caller graph for this function:

◆ copy_file()

bool fs::copy_file ( const path & from,
const path & to,
copy_options options )
inlinestatic

Definition at line 134 of file fs.h.

◆ exists()

bool fs::exists ( const path & p)
inlinestatic

Definition at line 95 of file fs.h.

Here is the caller graph for this function:

◆ operator+() [1/3]

path fs::operator+ ( path p1,
const char * p2 )
inlinestatic

Definition at line 117 of file fs.h.

◆ operator+() [2/3]

path fs::operator+ ( path p1,
path::value_type p2 )
inlinestatic

Definition at line 122 of file fs.h.

◆ operator+() [3/3]

template<typename T>
path fs::operator+ ( path p1,
T p2 )
inlinestaticdelete

◆ operator/() [1/3]

path fs::operator/ ( path p1,
const char * p2 )
inlinestatic

Definition at line 112 of file fs.h.

◆ operator/() [2/3]

path fs::operator/ ( path p1,
const path & p2 )
inlinestatic

Definition at line 107 of file fs.h.

◆ operator/() [3/3]

template<typename T>
path fs::operator/ ( path p1,
T p2 )
inlinestaticdelete

◆ PathFromString()

path fs::PathFromString ( const std::string & string)
inlinestatic

Convert byte string to path object.

Inverse of PathToString.

Definition at line 180 of file fs.h.

Here is the call graph for this function:

◆ PathToString()

std::string fs::PathToString ( const path & path)
inlinestatic

Convert path object to a byte string.

On POSIX, paths natively are byte strings, so this is trivial. On Windows, paths natively are Unicode, so an encoding step is necessary. The inverse of PathToString is PathFromString. The strings returned and parsed by these functions can be used to call POSIX APIs, and for roundtrip conversion, logging, and debugging.

Because PathToString and PathFromString functions don't specify an encoding, they are meant to be used internally, not externally. They are not appropriate to use in applications requiring UTF-8, where fs::path::u8string() / fs::path::utf8string() and fs::u8path() methods should be used instead. Other applications could require still different encodings. For example, JSON, XML, or URI applications might prefer to use higher-level escapes (\uXXXX or &XXXX; or XX) instead of multibyte encoding. Rust, Python, Java applications may require encoding paths with their respective UTF-8 derivatives WTF-8, PEP-383, and CESU-8 (see https://en.wikipedia.org/wiki/UTF-8#Derivatives).

Definition at line 157 of file fs.h.

Here is the caller graph for this function:

◆ quoted()

auto fs::quoted ( const std::string & s)
inlinestatic

Definition at line 101 of file fs.h.

◆ u8path()

path fs::u8path ( std::string_view utf8_str)
inlinestatic

Definition at line 81 of file fs.h.

Here is the caller graph for this function: