26#ifndef MYSQL_HARNESS_FILESYSTEM_INCLUDED
27#define MYSQL_HARNESS_FILESYSTEM_INCLUDED
29#include "harness_export.h"
36#include <system_error>
112 friend HARNESS_EXPORT std::ostream &
operator<<(std::ostream &out,
132 const std::string &extension);
156 FileType
type(
bool refresh =
false)
const;
161 bool is_directory()
const;
166 bool is_regular()
const;
190 bool is_readable()
const;
230 std::string extension()
const;
240 void append(
const Path &other);
258 Path real_path()
const;
269 const char *
c_str()
const {
return path_.c_str(); }
276 const std::string &
str() const noexcept {
return path_; }
283 bool is_set() const noexcept {
return (type_ != FileType::EMPTY_PATH); }
306 operator bool() const noexcept {
return is_set(); }
309 void validate_non_empty_path()
const;
348 const std::string &pattern = std::string());
367#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
374 Path operator*()
const;
443 DirectoryIterator cbegin()
const;
450 DirectoryIterator
end();
459 DirectoryIterator cend()
const;
477 std::vector<Path> list_recursive()
const;
482 DirectoryIterator glob(
const std::string &glob);
501 const std::string &
dir)
noexcept;
513 const std::string &
path)
noexcept;
525 const std::string &
dir)
noexcept;
621 const bool read_only_for_local_service =
true);
Definition: filesystem-posix.cc:124
Directory iterator for iterating over directory entries.
Definition: filesystem.h:337
const Path path_
Path to the root of the directory.
Definition: filesystem.h:391
std::input_iterator_tag iterator_category
Definition: filesystem.h:342
Path operator->()
Definition: filesystem.h:376
DirectoryIterator(const DirectoryIterator &)
bool operator==(const DirectoryIterator &other) const
Definition: filesystem.h:382
~DirectoryIterator()
Destructor.
std::shared_ptr< State > state_
Definition: filesystem.h:409
DirectoryIterator(DirectoryIterator &&)
std::ptrdiff_t difference_type
Definition: filesystem.h:343
std::string pattern_
Pattern that matches entries iterated over.
Definition: filesystem.h:396
Class representing a directory in a file system.
Definition: filesystem.h:330
DirectoryIterator end() const
Definition: filesystem.h:452
DirectoryIterator begin() const
Definition: filesystem.h:436
Directory(const Directory &)=default
Directory & operator=(const Directory &)=default
Directory(const std::string &path)
Construct a directory instance.
Definition: filesystem.h:419
Class representing a path in a file system.
Definition: filesystem.h:63
std::string path_
Definition: filesystem.h:311
static const char *const extension_separator
Extension separator string.
Definition: filesystem.h:304
const char * c_str() const
Get a C-string representation to the path.
Definition: filesystem.h:269
FileType type_
Definition: filesystem.h:312
bool is_set() const noexcept
Test if path is set.
Definition: filesystem.h:283
bool operator!=(const Path &rhs) const
Definition: filesystem.h:135
FileType
Enum used to identify file types.
Definition: filesystem.h:74
static const char *const root_directory
Root directory string.
Definition: filesystem.h:299
static const char *const directory_separator
Directory separator string.
Definition: filesystem.h:291
const std::string & str() const noexcept
Get a string representation of the path.
Definition: filesystem.h:276
friend std::ostream & operator<<(std::ostream &out, const Path &path)
Definition: filesystem.h:64
Path(const char *path)
Definition: filesystem.h:126
Definition: expected.h:286
HARNESS_EXPORT stdx::expected< void, std::error_code > delete_file(const std::string &path) noexcept
Removes a file.
Definition: filesystem-posix.cc:317
HARNESS_EXPORT stdx::expected< void, std::error_code > delete_dir(const std::string &dir) noexcept
Removes a directory.
Definition: filesystem-posix.cc:308
HARNESS_EXPORT std::string get_tmp_dir(const std::string &name="router")
Creates a temporary directory with partially-random name and returns its path.
Definition: filesystem-posix.cc:326
HARNESS_EXPORT stdx::expected< void, std::error_code > delete_dir_recursive(const std::string &dir) noexcept
Removes directory and all its contents.
Definition: filesystem.cc:259
bool operator!=(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:158
bool operator==(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:151
static char * path
Definition: mysqldump.cc:150
std::string dir
Double write files location.
Definition: buf0dblwr.cc:77
bool is_empty(const std::string &str)
Definition: generic.h:34
std::string file_name(Log_file_id file_id)
Provides name of the log file with the given file id, e.g.
Definition: log0pre_8_0_30.cc:94
std::string dirname(const std::string &path)
Definition: utilities.cc:38
std::string basename(const std::string &path)
Definition: utilities.cc:46
void HARNESS_EXPORT make_file_readonly(const std::string &file_name)
Changes file access permissions to be read only.
Definition: filesystem-posix.cc:371
HARNESS_EXPORT std::string get_tests_data_dir(const std::string &runtime_dir)
Definition: filesystem.cc:297
HARNESS_EXPORT int mkdir(const std::string &dir, perm_mode mode, bool recursive=false)
Creates a directory *.
Definition: filesystem.cc:342
void HARNESS_EXPORT check_file_access_rights(const std::string &file_name)
Verifies access permissions of a file.
Definition: filesystem.cc:350
void HARNESS_EXPORT make_file_private(const std::string &file_name, const bool read_only_for_local_service=true)
Changes file access permissions to be accessible only by a limited set of users.
Definition: filesystem-posix.cc:360
HARNESS_EXPORT std::string get_plugin_dir(const std::string &runtime_dir)
Definition: filesystem.cc:279
void HARNESS_EXPORT make_file_public(const std::string &file_name)
Changes file access permissions to be fully accessible by all users.
Definition: filesystem-posix.cc:351
std::string join(const detail::range auto &rng, std::string_view delim)
join elements of a range into a string separated by a delimiter.
Definition: string.h:74
mode_t perm_mode
Definition: filesystem.h:557
void make_file_readable_for_everyone(const std::string &file_name)
Definition: filesystem-windows.cc:459
HARNESS_EXPORT const perm_mode kStrictDirectoryPerm
Definition: filesystem-posix.cc:61
std::ostream & operator<<(std::ostream &out, Path::FileType type)
Definition: filesystem.cc:180
const char * begin(const char *const c)
Definition: base64.h:44
constexpr bool operator<(const address_v4 &a, const address_v4 &b) noexcept
Definition: internet.h:166
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
bool is_absolute(const std::string &path)
Checks if path is absolute.
Definition: utils_path_unix.cc:204
Definition: gcs_xcom_synode.h:64
mode
Definition: file_handle.h:61
static int exists(node_address *name, node_list const *nodes, u_int with_uid)
Definition: node_list.cc:106
bool_t is_set(node_set set, node_no i)
Definition: node_set.cc:234
required string type
Definition: replication_group_member_actions.proto:34
Ssl_acceptor_context_property_type & operator++(Ssl_acceptor_context_property_type &property_type)
Increment operator for Ssl_acceptor_context_type Used by iterator.
Definition: ssl_acceptor_context_data.cc:274
case opt name
Definition: sslopt-case.h:29