aboutsummaryrefslogtreecommitdiff
path: root/butl/filesystem.ixx
diff options
context:
space:
mode:
Diffstat (limited to 'butl/filesystem.ixx')
-rw-r--r--butl/filesystem.ixx144
1 files changed, 0 insertions, 144 deletions
diff --git a/butl/filesystem.ixx b/butl/filesystem.ixx
deleted file mode 100644
index 90f1715..0000000
--- a/butl/filesystem.ixx
+++ /dev/null
@@ -1,144 +0,0 @@
-// file : butl/filesystem.ixx -*- C++ -*-
-// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-namespace butl
-{
- inline bool
- dir_empty (const dir_path& d)
- {
- return dir_iterator (d) == dir_iterator ();
- }
-
- inline rmdir_status
- try_rmdir_r (const dir_path& p, bool ignore_error)
- {
- bool e (dir_exists (p)); //@@ What if it exists but is not a directory?
-
- if (e)
- rmdir_r (p, true, ignore_error);
-
- return e ? rmdir_status::success : rmdir_status::not_exist;
- }
-
- // auto_rm
- //
- template <typename P>
- inline auto_rm<P>::
- auto_rm (auto_rm&& x)
- : path_ (std::move (x.path_))
- {
- x.cancel ();
- }
-
- template <typename P>
- inline auto_rm<P>& auto_rm<P>::
- operator= (auto_rm&& x)
- {
- if (this != &x)
- {
- path_ = std::move (x.path_);
- x.cancel ();
- }
-
- return *this;
- }
-
- template <>
- inline auto_rm<path>::
- ~auto_rm () {if (!path_.empty ()) try_rmfile (path_, true);}
-
- template <>
- inline auto_rm<dir_path>::
- ~auto_rm () {if (!path_.empty ()) try_rmdir_r (path_, true);}
-
- // cpflags
- //
- inline cpflags operator& (cpflags x, cpflags y) {return x &= y;}
- inline cpflags operator| (cpflags x, cpflags y) {return x |= y;}
- inline cpflags operator&= (cpflags& x, cpflags y)
- {
- return x = static_cast<cpflags> (
- static_cast<std::uint16_t> (x) &
- static_cast<std::uint16_t> (y));
- }
-
- inline cpflags operator|= (cpflags& x, cpflags y)
- {
- return x = static_cast<cpflags> (
- static_cast<std::uint16_t> (x) |
- static_cast<std::uint16_t> (y));
- }
-
- // permissions
- //
- inline permissions operator& (permissions x, permissions y) {return x &= y;}
- inline permissions operator| (permissions x, permissions y) {return x |= y;}
- inline permissions operator&= (permissions& x, permissions y)
- {
- return x = static_cast<permissions> (
- static_cast<std::uint16_t> (x) &
- static_cast<std::uint16_t> (y));
- }
-
- inline permissions operator|= (permissions& x, permissions y)
- {
- return x = static_cast<permissions> (
- static_cast<std::uint16_t> (x) |
- static_cast<std::uint16_t> (y));
- }
-
- // dir_entry
- //
- inline entry_type dir_entry::
- ltype () const
- {
- return t_ != entry_type::unknown ? t_ : (t_ = type (false));
- }
-
- inline entry_type dir_entry::
- type () const
- {
- entry_type t (ltype ());
- return t != entry_type::symlink
- ? t
- : lt_ != entry_type::unknown ? lt_ : (lt_ = type (true));
- }
-
- // dir_iterator
- //
- inline dir_iterator::
- dir_iterator (dir_iterator&& x)
- : e_ (std::move (x.e_)), h_ (x.h_)
- {
-#ifndef _WIN32
- x.h_ = nullptr;
-#else
- x.h_ = -1;
-#endif
- }
-
- inline bool
- operator== (const dir_iterator& x, const dir_iterator& y)
- {
- return x.h_ == y.h_;
- }
-
- inline bool
- operator!= (const dir_iterator& x, const dir_iterator& y)
- {
- return !(x == y);
- }
-
- inline dir_iterator
- begin (dir_iterator& i)
- {
- return std::move (i);
- }
-
- inline dir_iterator
- end (const dir_iterator&)
- {
- return dir_iterator ();
- }
-}