From 23bd3ba0209e3b46d8179e25db4a87938e810687 Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Mon, 1 Sep 2025 01:51:33 -0500 Subject: [PATCH] checkpoint --- src/mfm_dup.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/mfm_dup.cpp diff --git a/src/mfm_dup.cpp b/src/mfm_dup.cpp new file mode 100644 index 00000000..c66ba790 --- /dev/null +++ b/src/mfm_dup.cpp @@ -0,0 +1,48 @@ +#include "mfm_options.hpp" + +#include + +#include "fmt/core.h" + +namespace fs = std::filesystem; + +namespace mfm +{ + void dup(const Opts::Dup &opts); +} + +void +mfm::dup(const Opts::Dup &opts_) +{ + if(fs::is_regular_file(opts_.path)) + { + } + else if(fs::is_directory(opts_.path)) + { + auto dir_opts = (fs::directory_options::follow_directory_symlink | + fs::directory_options::skip_permission_denied); + + for(const fs::directory_entry &de : + fs::recursive_directory_iterator(opts_.path,dir_opts)) + { + if(!de.is_directory()) + continue; + + std::error_code ec; + auto filepath = de.path() / ".dup_2"; + if(!fs::exists(filepath,ec)) + continue; + + fmt::println("{}:",filepath.string()); + for(const fs::directory_entry &de : + fs::directory_iterator(de.path())) + { + fmt::println("{}",de.path().string()); + } + } + } + else + { + throw std::runtime_error("invalid file type"); + } +}