aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.posix/ensure_dir.ccm
diff options
context:
space:
mode:
Diffstat (limited to 'nihil.posix/ensure_dir.ccm')
-rw-r--r--nihil.posix/ensure_dir.ccm16
1 files changed, 13 insertions, 3 deletions
diff --git a/nihil.posix/ensure_dir.ccm b/nihil.posix/ensure_dir.ccm
index fa92a90..7eecea8 100644
--- a/nihil.posix/ensure_dir.ccm
+++ b/nihil.posix/ensure_dir.ccm
@@ -6,6 +6,7 @@ module;
#include <expected>
#include <filesystem>
+#include <system_error>
export module nihil.posix:ensure_dir;
@@ -16,8 +17,17 @@ namespace nihil {
/*
* Create the given directory and any parent directories.
*/
-export [[nodiscard]] auto ensure_dir(std::filesystem::path const &dir)
- -> std::expected<void, error>;
+export [[nodiscard]] auto
+ensure_dir(std::filesystem::path const &dir) -> std::expected<void, error>
+{
+ auto err = std::error_code();
-} // namespace nihil
+ std::filesystem::create_directories(dir, err);
+
+ if (err)
+ return std::unexpected(error(err));
+ return {};
+}
+
+} // namespace nihil