]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
refactor: Convert Config::m_temporary_dir to fs::path
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 8 Jun 2024 18:50:38 +0000 (20:50 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 30 Jun 2024 15:18:52 +0000 (17:18 +0200)
src/ccache/Config.cpp
src/ccache/Config.hpp
src/ccache/InodeCache.cpp
src/ccache/ccache.cpp
src/ccache/execute.cpp
src/ccache/execute.hpp
unittest/test_InodeCache.cpp

index 89e1a05672023395fb6ff36ecaa4fd8611ed5fa8..9a34a6f83e9a7893f5439e1d9f6988e0eecd2805 100644 (file)
@@ -887,7 +887,7 @@ Config::get_string_value(const std::string& key) const
     return m_stats_log.string();
 
   case ConfigItem::temporary_dir:
-    return m_temporary_dir;
+    return m_temporary_dir.string();
 
   case ConfigItem::umask:
     return format_umask(m_umask);
@@ -1189,21 +1189,20 @@ Config::check_key_tables_consistency()
   }
 }
 
-std::string
+fs::path
 Config::default_temporary_dir() const
 {
-  static const std::string run_user_tmp_dir = [] {
+  static const fs::path run_user_tmp_dir = [] {
 #ifndef _WIN32
     const char* const xdg_runtime_dir = getenv("XDG_RUNTIME_DIR");
     if (xdg_runtime_dir && DirEntry(xdg_runtime_dir).is_directory()) {
-      auto dir = FMT("{}/ccache-tmp", xdg_runtime_dir);
+      fs::path dir = FMT("{}/ccache-tmp", xdg_runtime_dir);
       if (fs::create_directories(dir) && access(dir.c_str(), W_OK) == 0) {
         return dir;
       }
     }
 #endif
-    return std::string();
+    return fs::path();
   }();
-  return !run_user_tmp_dir.empty() ? run_user_tmp_dir
-                                   : util::pstr(m_cache_dir / "tmp");
+  return !run_user_tmp_dir.empty() ? run_user_tmp_dir : m_cache_dir / "tmp";
 }
index 8c91a69024e9646b76b666f49dbdf77672bec752..84c529145f868975f3343d54441d34254771acef 100644 (file)
@@ -94,7 +94,7 @@ public:
   bool stats() const;
   const std::filesystem::path& stats_log() const;
   const std::string& namespace_() const;
-  const std::string& temporary_dir() const;
+  const std::filesystem::path& temporary_dir() const;
   std::optional<mode_t> umask() const;
 
   // Return true for Clang and clang-cl.
@@ -104,7 +104,7 @@ public:
   bool is_compiler_group_msvc() const;
 
   util::SizeUnitPrefixType size_unit_prefix_type() const;
-  std::string default_temporary_dir() const;
+  std::filesystem::path default_temporary_dir() const;
 
   void set_base_dir(const std::filesystem::path& value);
   void set_cache_dir(const std::filesystem::path& value);
@@ -121,7 +121,7 @@ public:
   void set_max_files(uint64_t value);
   void set_msvc_dep_prefix(const std::string& value);
   void set_run_second_cpp(bool value);
-  void set_temporary_dir(const std::string& value);
+  void set_temporary_dir(const std::filesystem::path& value);
 
   // Where to write configuration changes.
   const std::filesystem::path& config_path() const;
@@ -214,7 +214,7 @@ private:
   bool m_stats = true;
   std::filesystem::path m_stats_log;
   std::string m_namespace;
-  std::string m_temporary_dir;
+  std::filesystem::path m_temporary_dir;
   std::optional<mode_t> m_umask;
 
   bool m_temporary_dir_configured_explicitly = false;
@@ -497,7 +497,7 @@ Config::namespace_() const
   return m_namespace;
 }
 
-inline const std::string&
+inline const std::filesystem::path&
 Config::temporary_dir() const
 {
   return m_temporary_dir;
@@ -609,7 +609,7 @@ Config::set_run_second_cpp(bool value)
 }
 
 inline void
-Config::set_temporary_dir(const std::string& value)
+Config::set_temporary_dir(const std::filesystem::path& value)
 {
   m_temporary_dir = value;
 }
index 2a335a9892a4f8d93e7b4d8c80126a9b1588a615..159fcdf6d5ec806abc0436b305aaee0ebf6cfad1 100644 (file)
@@ -464,7 +464,7 @@ InodeCache::initialize()
 #else
       ULARGE_INTEGER free_space_for_user{};
 
-      if (GetDiskFreeSpaceExA(m_config.temporary_dir().c_str(),
+      if (GetDiskFreeSpaceExA(util::pstr(m_config.temporary_dir()).c_str(),
                               &free_space_for_user,
                               nullptr,
                               nullptr)
index b9c2df317ddc3be43de3abc88741b2a55c94fd9a..b5a263910d81e1aeb82810a65ef48bf8534896b2 100644 (file)
@@ -2427,7 +2427,7 @@ cache_compilation(int argc, const char* const* argv)
   bool fall_back_to_original_compiler = false;
   Args saved_orig_args;
   std::optional<uint32_t> original_umask;
-  std::string saved_temp_dir;
+  fs::path saved_temp_dir;
 
   auto argv_parts = split_argv(argc, argv);
   if (argv_parts.compiler_and_args.empty()) {
index 484820a8c9288bb530540dc69bbe4f92143ce2a7..cb4d2cc71775d2713261ae0bddfb6c426fb03c50 100644 (file)
@@ -75,13 +75,13 @@ execute(Context& ctx,
                       1,
                       fd_out.release(),
                       fd_err.release(),
-                      ctx.config.temporary_dir());
+                      util::pstr(ctx.config.temporary_dir()));
 }
 
 void
-execute_noreturn(const char* const* argv, const std::string& temp_dir)
+execute_noreturn(const char* const* argv, const fs::path& temp_dir)
 {
-  win32execute(argv[0], argv, 0, -1, -1, temp_dir);
+  win32execute(argv[0], argv, 0, -1, -1, util::pstr(temp_dir).c_str());
 }
 
 std::string
@@ -361,7 +361,8 @@ execute(Context& ctx,
 }
 
 void
-execute_noreturn(const char* const* argv, const std::string& /*temp_dir*/)
+execute_noreturn(const char* const* argv,
+                 const std::filesystem::path& /*temp_dir*/)
 {
   execv(argv[0], const_cast<char* const*>(argv));
 }
index 7eaa33d12bb159c388162f9493265082a23c0bbb..7d184c8a776c1c5c8e88e44bfafa4a886facb631 100644 (file)
@@ -31,7 +31,8 @@ int execute(Context& ctx,
             util::Fd&& fd_out,
             util::Fd&& fd_err);
 
-void execute_noreturn(const char* const* argv, const std::string& temp_dir);
+void execute_noreturn(const char* const* argv,
+                      const std::filesystem::path& temp_dir);
 
 // Find an executable named `name` in `$PATH`. Exclude any executables that are
 // links to `exclude_path`.
index 441ddcf18938b96f5bdeaf7cb00e7eb76aa1f58d..feec4e34f98e24586112cd04ffdcd017c0b9b778 100644 (file)
@@ -58,7 +58,7 @@ init(Config& config)
 {
   config.set_debug(true);
   config.set_inode_cache(true);
-  config.set_temporary_dir(util::pstr(*fs::current_path()));
+  config.set_temporary_dir(*fs::current_path());
 }
 
 bool