From cb852c16ccda6313fa07ce991b95fd18510ba84a Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Thu, 13 Sep 2018 21:42:54 -0700 Subject: [PATCH] remove metaprogramming --- src/fspp/fstest/FsppFileTest_Timestamps.h | 2 +- src/fspp/impl/FilesystemImpl.cpp | 32 +++-------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/src/fspp/fstest/FsppFileTest_Timestamps.h b/src/fspp/fstest/FsppFileTest_Timestamps.h index 9399d944..67ba5eab 100644 --- a/src/fspp/fstest/FsppFileTest_Timestamps.h +++ b/src/fspp/fstest/FsppFileTest_Timestamps.h @@ -10,7 +10,7 @@ public: cpputils::unique_ref CreateFileWithSize(const boost::filesystem::path &path, off_t size) { auto file = this->CreateFile(path); file->truncate(size); - assert(this->stat(*this->Load(path)).st_size == size); + assert(this->stat(*this->Load(path)).size == size); return file; } }; diff --git a/src/fspp/impl/FilesystemImpl.cpp b/src/fspp/impl/FilesystemImpl.cpp index a16ab654..2228aa3d 100644 --- a/src/fspp/impl/FilesystemImpl.cpp +++ b/src/fspp/impl/FilesystemImpl.cpp @@ -11,6 +11,7 @@ #include #include +#include #include using namespace fspp; @@ -138,33 +139,6 @@ void FilesystemImpl::closeFile(int descriptor) { } namespace { -// Implementation taken from http://en.cppreference.com/w/cpp/types/void_t -// (it takes CWG1558 into account and also works for older compilers) -template struct make_void { typedef void type;}; -template using void_t = typename make_void::type; - -template struct uses_timespec final : std::false_type {}; -template struct uses_timespec> final : std::true_type {}; - -// convert_stat_info_timestamps_ looks if struct ::stat has st_atim or st_atime members -// and sets the correct ones. -template struct convert_stat_info_timestamps_ final {}; -template struct convert_stat_info_timestamps_::value>> final { - static void call(const fspp::Node::stat_info& input, Stat* output) { - output->st_atim = input.atime; - output->st_mtim = input.mtime; - output->st_ctim = input.ctime; - } -}; -template struct convert_stat_info_timestamps_::value>> final { - static void call(const fspp::Node::stat_info& input, Stat* output) { - output->st_atime = input.atime.tv_sec; - output->st_mtime = input.mtime.tv_sec; - output->st_ctime = input.ctime.tv_sec; - } -}; - - void convert_stat_info_(const fspp::Node::stat_info& input, struct ::stat *output) { output->st_nlink = input.nlink; output->st_mode = input.mode; @@ -172,7 +146,9 @@ void convert_stat_info_(const fspp::Node::stat_info& input, struct ::stat *outpu output->st_gid = input.gid; output->st_size = input.size; output->st_blocks = input.blocks; - convert_stat_info_timestamps_::call(input, output); + output->st_atim = input.atime; + output->st_mtim = input.mtime; + output->st_ctim = input.ctime; } }