From: Joel Rosdahl Date: Sat, 8 Jun 2024 18:50:38 +0000 (+0200) Subject: refactor: Convert Config::m_temporary_dir to fs::path X-Git-Tag: v4.11~105 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=59c22e9b50813644a0c1a2863fa6c862d0a4d303;p=thirdparty%2Fccache.git refactor: Convert Config::m_temporary_dir to fs::path --- diff --git a/src/ccache/Config.cpp b/src/ccache/Config.cpp index 89e1a056..9a34a6f8 100644 --- a/src/ccache/Config.cpp +++ b/src/ccache/Config.cpp @@ -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"; } diff --git a/src/ccache/Config.hpp b/src/ccache/Config.hpp index 8c91a690..84c52914 100644 --- a/src/ccache/Config.hpp +++ b/src/ccache/Config.hpp @@ -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 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 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; } diff --git a/src/ccache/InodeCache.cpp b/src/ccache/InodeCache.cpp index 2a335a98..159fcdf6 100644 --- a/src/ccache/InodeCache.cpp +++ b/src/ccache/InodeCache.cpp @@ -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) diff --git a/src/ccache/ccache.cpp b/src/ccache/ccache.cpp index b9c2df31..b5a26391 100644 --- a/src/ccache/ccache.cpp +++ b/src/ccache/ccache.cpp @@ -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 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()) { diff --git a/src/ccache/execute.cpp b/src/ccache/execute.cpp index 484820a8..cb4d2cc7 100644 --- a/src/ccache/execute.cpp +++ b/src/ccache/execute.cpp @@ -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(argv)); } diff --git a/src/ccache/execute.hpp b/src/ccache/execute.hpp index 7eaa33d1..7d184c8a 100644 --- a/src/ccache/execute.hpp +++ b/src/ccache/execute.hpp @@ -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`. diff --git a/unittest/test_InodeCache.cpp b/unittest/test_InodeCache.cpp index 441ddcf1..feec4e34 100644 --- a/unittest/test_InodeCache.cpp +++ b/unittest/test_InodeCache.cpp @@ -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