25#ifndef MYSQL_HARNESS_FILESYSTEM_INCLUDED
26#define MYSQL_HARNESS_FILESYSTEM_INCLUDED
28#include "harness_export.h"
35#include <system_error>
111 friend HARNESS_EXPORT std::ostream &
operator<<(std::ostream &out,
131 const std::string &extension);
155 FileType
type(
bool refresh =
false)
const;
160 bool is_directory()
const;
165 bool is_regular()
const;
176 bool is_absolute()
const;
189 bool is_readable()
const;
229 void append(
const Path &other);
247 Path real_path()
const;
258 const char *
c_str()
const {
return path_.c_str(); }
265 const std::string &
str() const noexcept {
return path_; }
272 bool is_set() const noexcept {
return (type_ != FileType::EMPTY_PATH); }
290 operator bool() const noexcept {
return is_set(); }
293 void validate_non_empty_path()
const;
332 const std::string &pattern = std::string());
351#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
358 Path operator*()
const;
427 DirectoryIterator cbegin()
const;
434 DirectoryIterator
end();
443 DirectoryIterator cend()
const;
451 bool is_empty()
const;
461 std::vector<Path> list_recursive()
const;
466 DirectoryIterator glob(
const std::string &glob);
485 const std::string &
dir)
noexcept;
497 const std::string &
path)
noexcept;
509 const std::string &
dir)
noexcept;
605 const bool read_only_for_local_service =
true);
Definition: filesystem-posix.cc:124
Directory iterator for iterating over directory entries.
Definition: filesystem.h:321
const Path path_
Path to the root of the directory.
Definition: filesystem.h:375
std::input_iterator_tag iterator_category
Definition: filesystem.h:326
Path operator->()
Definition: filesystem.h:360
DirectoryIterator(const DirectoryIterator &)
bool operator==(const DirectoryIterator &other) const
Definition: filesystem.h:366
~DirectoryIterator()
Destructor.
std::shared_ptr< State > state_
Definition: filesystem.h:393
DirectoryIterator(DirectoryIterator &&)
std::ptrdiff_t difference_type
Definition: filesystem.h:327
std::string pattern_
Pattern that matches entries iterated over.
Definition: filesystem.h:380
Class representing a directory in a file system.
Definition: filesystem.h:314
DirectoryIterator end() const
Definition: filesystem.h:436
DirectoryIterator begin() const
Definition: filesystem.h:420
Directory(const Directory &)=default
Directory & operator=(const Directory &)=default
Directory(const std::string &path)
Construct a directory instance.
Definition: filesystem.h:403
Class representing a path in a file system.
Definition: filesystem.h:62
std::string path_
Definition: filesystem.h:295
const char * c_str() const
Get a C-string representation to the path.
Definition: filesystem.h:258
FileType type_
Definition: filesystem.h:296
bool is_set() const noexcept
Test if path is set.
Definition: filesystem.h:272
bool operator!=(const Path &rhs) const
Definition: filesystem.h:134
FileType
Enum used to identify file types.
Definition: filesystem.h:73
static const char *const root_directory
Root directory string.
Definition: filesystem.h:288
static const char *const directory_separator
Directory separator string.
Definition: filesystem.h:280
const std::string & str() const noexcept
Get a string representation of the path.
Definition: filesystem.h:265
friend std::ostream & operator<<(std::ostream &out, const Path &path)
Definition: filesystem.h:63
Path(const char *path)
Definition: filesystem.h:125
Definition: expected.h:943
HARNESS_EXPORT stdx::expected< void, std::error_code > delete_file(const std::string &path) noexcept
Removes a file.
Definition: filesystem-posix.cc:318
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:328
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:244
bool operator!=(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:157
bool operator==(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:150
static char * path
Definition: mysqldump.cc:140
std::string dir
Double write files location.
Definition: buf0dblwr.cc:76
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:93
std::string dirname(const std::string &path)
Definition: utilities.cc:37
std::string basename(const std::string &path)
Definition: utilities.cc:45
void HARNESS_EXPORT make_file_readonly(const std::string &file_name)
Changes file access permissions to be read only.
Definition: filesystem-posix.cc:373
HARNESS_EXPORT std::string get_tests_data_dir(const std::string &runtime_dir)
Definition: filesystem.cc:283
HARNESS_EXPORT int mkdir(const std::string &dir, perm_mode mode, bool recursive=false)
Creates a directory *.
Definition: filesystem.cc:328
void HARNESS_EXPORT check_file_access_rights(const std::string &file_name)
Verifies access permissions of a file.
Definition: filesystem.cc:336
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:362
HARNESS_EXPORT std::string get_plugin_dir(const std::string &runtime_dir)
Definition: filesystem.cc:265
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:353
std::string join(Container cont, const std::string &delim)
join elements of an container into a string separated by a delimiter.
Definition: string.h:150
mode_t perm_mode
Definition: filesystem.h:541
void make_file_readable_for_everyone(const std::string &file_name)
Definition: filesystem-windows.cc:469
HARNESS_EXPORT const perm_mode kStrictDirectoryPerm
Definition: filesystem-posix.cc:61
std::ostream & operator<<(std::ostream &out, Path::FileType type)
Definition: filesystem.cc:165
constexpr bool operator<(const address_v4 &a, const address_v4 &b) noexcept
Definition: internet.h:165
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
Definition: varlen_sort.h:183
mode
Definition: file_handle.h:59
static int exists(node_address *name, node_list const *nodes, u_int with_uid)
Definition: node_list.cc:105
bool_t is_set(node_set set, node_no i)
Definition: node_set.cc:229
required string type
Definition: replication_group_member_actions.proto:33
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:272
case opt name
Definition: sslopt-case.h:32