]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
refactor: Move Finalizer to util
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 30 Sep 2023 17:40:33 +0000 (19:40 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 1 Oct 2023 16:12:18 +0000 (18:12 +0200)
src/InodeCache.cpp
src/Util.cpp
src/ccache.cpp
src/core/common.cpp
src/execute.cpp
src/util/DirEntry.cpp
src/util/Finalizer.hpp [moved from src/Finalizer.hpp with 89% similarity]
src/util/file.cpp
unittest/test_bsdmkstemp.cpp
unittest/test_util_DirEntry.cpp

index 4add4bd9ec4ffed71556f77ba400dbb63ffc93be..26339b5898e27c3118dde326d813fa48863e8fd6 100644 (file)
@@ -19,7 +19,6 @@
 #include "InodeCache.hpp"
 
 #include "Config.hpp"
-#include "Finalizer.hpp"
 #include "Hash.hpp"
 #include "Logging.hpp"
 #include "Util.hpp"
@@ -27,6 +26,7 @@
 
 #include <util/DirEntry.hpp>
 #include <util/Fd.hpp>
+#include <util/Finalizer.hpp>
 #include <util/TemporaryFile.hpp>
 #include <util/conversion.hpp>
 #include <util/file.hpp>
@@ -352,7 +352,7 @@ InodeCache::create_new_file(const std::string& filename)
     return false;
   }
 
-  Finalizer temp_file_remover([&] { unlink(tmp_file->path.c_str()); });
+  util::Finalizer temp_file_remover([&] { unlink(tmp_file->path.c_str()); });
 
   if (!fd_is_on_known_to_work_file_system(*tmp_file->fd)) {
     return false;
index 9281775fd449dd0161709322be0fad77f8263299..9099d0a5fa5ac39817a1e5e5b0c36cfb949bde91 100644 (file)
@@ -24,7 +24,6 @@
 #include "Win32Util.hpp"
 
 #include <Config.hpp>
-#include <Finalizer.hpp>
 #include <core/exceptions.hpp>
 #include <fmtmacros.hpp>
 #include <util/DirEntry.hpp>
index 201d4844b66f911e2c4a272ac009327323eaf5d8..7d037e5cc706f2cdaa0488b0c3be04618c714f36 100644 (file)
@@ -24,7 +24,6 @@
 #include "Context.hpp"
 #include "Depfile.hpp"
 #include "File.hpp"
-#include "Finalizer.hpp"
 #include "Hash.hpp"
 #include "Logging.hpp"
 #include "MiniTrace.hpp"
@@ -51,6 +50,7 @@
 #include <core/types.hpp>
 #include <storage/Storage.hpp>
 #include <util/Fd.hpp>
+#include <util/Finalizer.hpp>
 #include <util/TemporaryFile.hpp>
 #include <util/UmaskScope.hpp>
 #include <util/environment.hpp>
@@ -2335,7 +2335,7 @@ cache_compilation(int argc, const char* const* argv)
     ctx.initialize(std::move(argv_parts.compiler_and_args),
                    argv_parts.config_settings);
     SignalHandler signal_handler(ctx);
-    Finalizer finalizer([&ctx] { finalize_at_exit(ctx); });
+    util::Finalizer finalizer([&ctx] { finalize_at_exit(ctx); });
 
     initialize(ctx, argv, argv_parts.masquerading_as_compiler);
 
index 72acaab61616bc2ed54d034f06eb02de2f5758cc..54f49e08894921dd021ec1cf7e1a1efd10c01187 100644 (file)
@@ -19,9 +19,9 @@
 #include "common.hpp"
 
 #include <Context.hpp>
-#include <Finalizer.hpp>
 #include <core/exceptions.hpp>
 #include <fmtmacros.hpp>
+#include <util/Finalizer.hpp>
 #include <util/Tokenizer.hpp>
 #include <util/expected.hpp>
 #include <util/file.hpp>
@@ -133,7 +133,7 @@ send_to_console(const Context& ctx, std::string_view text, int fd)
   // newlines a second time since we treat output as binary data. Make sure to
   // switch to binary mode.
   int oldmode = _setmode(fd, _O_BINARY);
-  Finalizer binary_mode_restorer([=] { _setmode(fd, oldmode); });
+  util::Finalizer binary_mode_restorer([=] { _setmode(fd, oldmode); });
 #endif
 
   if (ctx.args_info.strip_diagnostics_colors) {
index 63f64a51c152840dee049b6d8632f54adee14c86..2c2ae6e7b45499db6b87b35c1bcb60109c52a6d1 100644 (file)
@@ -31,6 +31,7 @@
 #include <fmtmacros.hpp>
 #include <util/DirEntry.hpp>
 #include <util/Fd.hpp>
+#include <util/Finalizer.hpp>
 #include <util/TemporaryFile.hpp>
 #include <util/expected.hpp>
 #include <util/file.hpp>
 #  include <sys/wait.h>
 #endif
 
-#ifdef _WIN32
-#  include "Finalizer.hpp"
-#endif
-
 namespace fs = util::filesystem;
 
 #ifdef _WIN32
@@ -223,7 +220,7 @@ win32execute(const char* path,
   std::string full_path = Win32Util::add_exe_suffix(path);
   fs::path tmp_file_path;
 
-  Finalizer tmp_file_remover([&tmp_file_path] {
+  util::Finalizer tmp_file_remover([&tmp_file_path] {
     if (!tmp_file_path.empty()) {
       util::remove(tmp_file_path);
     }
index ca686050f763f9276aa42cc803423b371f00f35d..8dad7e939e50447b14a54bc8d2ea5ecf52d4cba4 100644 (file)
 
 #include "DirEntry.hpp"
 
-#include <Finalizer.hpp>
 #include <Logging.hpp>
 #include <Win32Util.hpp>
 #include <fmtmacros.hpp>
+#include <util/Finalizer.hpp>
 #include <util/file.hpp>
 #include <util/wincompat.hpp>
 
@@ -138,7 +138,7 @@ win32_stat_impl(const char* path,
     return false;
   }
 
-  Finalizer closer([&] { CloseHandle(handle); });
+  util::Finalizer closer([&] { CloseHandle(handle); });
 
   switch (GetFileType(handle)) {
   case FILE_TYPE_DISK: {
similarity index 89%
rename from src/Finalizer.hpp
rename to src/util/Finalizer.hpp
index c5d2033c1d45ab2b6aea7713516543e4d2bec29d..baea58af0741a8eb78615873c2ae70f53246498f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021 Joel Rosdahl and other contributors
+// Copyright (C) 2020-2023 Joel Rosdahl and other contributors
 //
 // See doc/AUTHORS.adoc for a complete list of contributors.
 //
@@ -20,6 +20,8 @@
 
 #include <functional>
 
+namespace util {
+
 class Finalizer
 {
 public:
@@ -28,7 +30,7 @@ public:
 
 private:
   std::function<void()> m_finalizer;
-};
+}; // namespace class Finalizer
 
 inline Finalizer::Finalizer(std::function<void()> finalizer)
   : m_finalizer(finalizer)
@@ -39,3 +41,5 @@ inline Finalizer::~Finalizer()
 {
   m_finalizer();
 }
+
+} // namespace util
index 8882fa5df3934b2033b39215618fedd8477bd280..76d2b18c2b2488787250827771091945e8fffb7c 100644 (file)
 
 #include "file.hpp"
 
-#include <Finalizer.hpp>
 #include <Logging.hpp>
 #include <Win32Util.hpp>
 #include <fmtmacros.hpp>
 #include <util/Bytes.hpp>
 #include <util/DirEntry.hpp>
 #include <util/Fd.hpp>
+#include <util/Finalizer.hpp>
 #include <util/TemporaryFile.hpp>
 #include <util/expected.hpp>
 #include <util/file.hpp>
index 30aaa7fe492f9aae17c46936c84d9aeac052627c..f0cdb4192099d7b0dbb827ef8a8b23196b180221 100644 (file)
 // this program; if not, write to the Free Software Foundation, Inc., 51
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-#include "../src/Finalizer.hpp"
 #include "TestUtil.hpp"
 
 #include <util/Fd.hpp>
+#include <util/Finalizer.hpp>
 #include <util/wincompat.hpp>
 
 #include "third_party/doctest.h"
@@ -104,7 +104,8 @@ TEST_CASE("bsd_mkstemps")
     ++rand_iter;
   });
 
-  Finalizer reset_random_source([] { bsd_mkstemp_set_random_source(nullptr); });
+  util::Finalizer reset_random_source(
+    [] { bsd_mkstemp_set_random_source(nullptr); });
 
   SUBCASE("successful")
   {
index a9426f4aeaeb78b8ae3201757d9bdb5e21b98fba..ebd349d6bf64755542cc054a04018b4a8883e029 100644 (file)
@@ -18,8 +18,8 @@
 
 #include "TestUtil.hpp"
 
-#include <Finalizer.hpp>
 #include <util/DirEntry.hpp>
+#include <util/Finalizer.hpp>
 #include <util/environment.hpp>
 #include <util/file.hpp>
 #include <util/filesystem.hpp>
@@ -588,7 +588,7 @@ TEST_CASE("Win32 Pending Delete" * doctest::skip(running_under_wine()))
                 FILE_ATTRIBUTE_NORMAL,
                 nullptr);
   REQUIRE_MESSAGE(handle != INVALID_HANDLE_VALUE, "err=" << GetLastError());
-  Finalizer cleanup([&] { CloseHandle(handle); });
+  util::Finalizer cleanup([&] { CloseHandle(handle); });
 
   // Mark file as deleted. This puts it into a "pending delete" state that
   // will persist until the handle is closed. Until the file is closed, new
@@ -621,7 +621,7 @@ TEST_CASE("Win32 No Sharing")
                               FILE_ATTRIBUTE_NORMAL,
                               nullptr);
   REQUIRE_MESSAGE(handle != INVALID_HANDLE_VALUE, "err=" << GetLastError());
-  Finalizer cleanup([&] { CloseHandle(handle); });
+  util::Finalizer cleanup([&] { CloseHandle(handle); });
 
   // Sanity check we can't open the file for read/write access.
   REQUIRE(!util::read_file<std::string>("file"));