123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- // Filesystem operational functions -*- C++ -*-
- // Copyright (C) 2014-2022 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your __option)
- // any later version.
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU General Public License for more details.
- // Under Section 7 of GPL version 3, you are granted additional
- // permissions described in the GCC Runtime Library Exception, version
- // 3.1, as published by the Free Software Foundation.
- // You should have received a copy of the GNU General Public License and
- // a copy of the GCC Runtime Library Exception along with this program;
- // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- // <http://www.gnu.org/licenses/>.
- /** @file include/bits/fs_ops.h
- * This is an internal header file, included by other library headers.
- * Do not attempt to use it directly. @headername{filesystem}
- */
- #ifndef _GLIBCXX_FS_OPS_H
- #define _GLIBCXX_FS_OPS_H 1
- #if __cplusplus >= 201703L
- #include <cstdint>
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
- namespace filesystem
- {
- /** @addtogroup filesystem
- * @{
- */
- [[nodiscard]]
- path absolute(const path& __p);
- [[nodiscard]]
- path absolute(const path& __p, error_code& __ec);
- [[nodiscard]]
- path canonical(const path& __p);
- [[nodiscard]]
- path canonical(const path& __p, error_code& __ec);
- inline void
- copy(const path& __from, const path& __to)
- { copy(__from, __to, copy_options::none); }
- inline void
- copy(const path& __from, const path& __to, error_code& __ec)
- { copy(__from, __to, copy_options::none, __ec); }
- void copy(const path& __from, const path& __to, copy_options __options);
- void copy(const path& __from, const path& __to, copy_options __options,
- error_code& __ec);
- inline bool
- copy_file(const path& __from, const path& __to)
- { return copy_file(__from, __to, copy_options::none); }
- inline bool
- copy_file(const path& __from, const path& __to, error_code& __ec)
- { return copy_file(__from, __to, copy_options::none, __ec); }
- bool copy_file(const path& __from, const path& __to, copy_options __option);
- bool copy_file(const path& __from, const path& __to, copy_options __option,
- error_code& __ec);
- void copy_symlink(const path& __existing_symlink, const path& __new_symlink);
- void copy_symlink(const path& __existing_symlink, const path& __new_symlink,
- error_code& __ec) noexcept;
- bool create_directories(const path& __p);
- bool create_directories(const path& __p, error_code& __ec);
- bool create_directory(const path& __p);
- bool create_directory(const path& __p, error_code& __ec) noexcept;
- bool create_directory(const path& __p, const path& attributes);
- bool create_directory(const path& __p, const path& attributes,
- error_code& __ec) noexcept;
- void create_directory_symlink(const path& __to, const path& __new_symlink);
- void create_directory_symlink(const path& __to, const path& __new_symlink,
- error_code& __ec) noexcept;
- void create_hard_link(const path& __to, const path& __new_hard_link);
- void create_hard_link(const path& __to, const path& __new_hard_link,
- error_code& __ec) noexcept;
- void create_symlink(const path& __to, const path& __new_symlink);
- void create_symlink(const path& __to, const path& __new_symlink,
- error_code& __ec) noexcept;
- [[nodiscard]]
- path current_path();
- [[nodiscard]]
- path current_path(error_code& __ec);
- void current_path(const path& __p);
- void current_path(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- bool
- equivalent(const path& __p1, const path& __p2);
- [[nodiscard]]
- bool
- equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept;
- [[nodiscard]]
- inline bool
- exists(file_status __s) noexcept
- { return status_known(__s) && __s.type() != file_type::not_found; }
- [[nodiscard]]
- inline bool
- exists(const path& __p)
- { return exists(status(__p)); }
- [[nodiscard]]
- inline bool
- exists(const path& __p, error_code& __ec) noexcept
- {
- auto __s = status(__p, __ec);
- if (status_known(__s))
- {
- __ec.clear();
- return __s.type() != file_type::not_found;
- }
- return false;
- }
- [[nodiscard]]
- uintmax_t file_size(const path& __p);
- [[nodiscard]]
- uintmax_t file_size(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- uintmax_t hard_link_count(const path& __p);
- [[nodiscard]]
- uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- inline bool
- is_block_file(file_status __s) noexcept
- { return __s.type() == file_type::block; }
- [[nodiscard]]
- inline bool
- is_block_file(const path& __p)
- { return is_block_file(status(__p)); }
- [[nodiscard]]
- inline bool
- is_block_file(const path& __p, error_code& __ec) noexcept
- { return is_block_file(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_character_file(file_status __s) noexcept
- { return __s.type() == file_type::character; }
- [[nodiscard]]
- inline bool
- is_character_file(const path& __p)
- { return is_character_file(status(__p)); }
- [[nodiscard]]
- inline bool
- is_character_file(const path& __p, error_code& __ec) noexcept
- { return is_character_file(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_directory(file_status __s) noexcept
- { return __s.type() == file_type::directory; }
- [[nodiscard]]
- inline bool
- is_directory(const path& __p)
- { return is_directory(status(__p)); }
- [[nodiscard]]
- inline bool
- is_directory(const path& __p, error_code& __ec) noexcept
- { return is_directory(status(__p, __ec)); }
- [[nodiscard]]
- bool is_empty(const path& __p);
- [[nodiscard]]
- bool is_empty(const path& __p, error_code& __ec);
- [[nodiscard]]
- inline bool
- is_fifo(file_status __s) noexcept
- { return __s.type() == file_type::fifo; }
- [[nodiscard]]
- inline bool
- is_fifo(const path& __p)
- { return is_fifo(status(__p)); }
- [[nodiscard]]
- inline bool
- is_fifo(const path& __p, error_code& __ec) noexcept
- { return is_fifo(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_other(file_status __s) noexcept
- {
- return exists(__s) && !is_regular_file(__s) && !is_directory(__s)
- && !is_symlink(__s);
- }
- [[nodiscard]]
- inline bool
- is_other(const path& __p)
- { return is_other(status(__p)); }
- [[nodiscard]]
- inline bool
- is_other(const path& __p, error_code& __ec) noexcept
- { return is_other(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_regular_file(file_status __s) noexcept
- { return __s.type() == file_type::regular; }
- [[nodiscard]]
- inline bool
- is_regular_file(const path& __p)
- { return is_regular_file(status(__p)); }
- [[nodiscard]]
- inline bool
- is_regular_file(const path& __p, error_code& __ec) noexcept
- { return is_regular_file(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_socket(file_status __s) noexcept
- { return __s.type() == file_type::socket; }
- [[nodiscard]]
- inline bool
- is_socket(const path& __p)
- { return is_socket(status(__p)); }
- [[nodiscard]]
- inline bool
- is_socket(const path& __p, error_code& __ec) noexcept
- { return is_socket(status(__p, __ec)); }
- [[nodiscard]]
- inline bool
- is_symlink(file_status __s) noexcept
- { return __s.type() == file_type::symlink; }
- [[nodiscard]]
- inline bool
- is_symlink(const path& __p)
- { return is_symlink(symlink_status(__p)); }
- [[nodiscard]]
- inline bool
- is_symlink(const path& __p, error_code& __ec) noexcept
- { return is_symlink(symlink_status(__p, __ec)); }
- [[nodiscard]]
- file_time_type last_write_time(const path& __p);
- [[nodiscard]]
- file_time_type last_write_time(const path& __p, error_code& __ec) noexcept;
- void last_write_time(const path& __p, file_time_type __new_time);
- void last_write_time(const path& __p, file_time_type __new_time,
- error_code& __ec) noexcept;
- void
- permissions(const path& __p, perms __prms,
- perm_options __opts = perm_options::replace);
- inline void
- permissions(const path& __p, perms __prms, error_code& __ec) noexcept
- { permissions(__p, __prms, perm_options::replace, __ec); }
- void
- permissions(const path& __p, perms __prms, perm_options __opts,
- error_code& __ec) noexcept;
- [[nodiscard]]
- inline path proximate(const path& __p, error_code& __ec)
- { return proximate(__p, current_path(), __ec); }
- [[nodiscard]]
- path proximate(const path& __p, const path& __base = current_path());
- [[nodiscard]]
- path proximate(const path& __p, const path& __base, error_code& __ec);
- [[nodiscard]]
- path read_symlink(const path& __p);
- [[nodiscard]]
- path read_symlink(const path& __p, error_code& __ec);
- [[nodiscard]]
- inline path relative(const path& __p, error_code& __ec)
- { return relative(__p, current_path(), __ec); }
- [[nodiscard]]
- path relative(const path& __p, const path& __base = current_path());
- [[nodiscard]]
- path relative(const path& __p, const path& __base, error_code& __ec);
- bool remove(const path& __p);
- bool remove(const path& __p, error_code& __ec) noexcept;
- uintmax_t remove_all(const path& __p);
- uintmax_t remove_all(const path& __p, error_code& __ec);
- void rename(const path& __from, const path& __to);
- void rename(const path& __from, const path& __to, error_code& __ec) noexcept;
- void resize_file(const path& __p, uintmax_t __size);
- void resize_file(const path& __p, uintmax_t __size, error_code& __ec) noexcept;
- [[nodiscard]]
- space_info space(const path& __p);
- [[nodiscard]]
- space_info space(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- file_status status(const path& __p);
- [[nodiscard]]
- file_status status(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- inline bool status_known(file_status __s) noexcept
- { return __s.type() != file_type::none; }
- [[nodiscard]]
- file_status symlink_status(const path& __p);
- [[nodiscard]]
- file_status symlink_status(const path& __p, error_code& __ec) noexcept;
- [[nodiscard]]
- path temp_directory_path();
- [[nodiscard]]
- path temp_directory_path(error_code& __ec);
- [[nodiscard]]
- path weakly_canonical(const path& __p);
- [[nodiscard]]
- path weakly_canonical(const path& __p, error_code& __ec);
- /// @} group filesystem
- } // namespace filesystem
- _GLIBCXX_END_NAMESPACE_VERSION
- } // namespace std
- #endif // C++17
- #endif // _GLIBCXX_FS_OPS_H
|