1 #pragma once 2 3 #include <boost/asio/io_context.hpp> 4 5 #include <filesystem> 6 7 namespace phosphor::software::utils 8 { 9 10 namespace fs = std::filesystem; 11 12 struct RemovablePath 13 { 14 fs::path path; 15 RemovablePathphosphor::software::utils::RemovablePath16 explicit RemovablePath(const fs::path& path) : path(path) {} ~RemovablePathphosphor::software::utils::RemovablePath17 ~RemovablePath() 18 { 19 if (!path.empty()) 20 { 21 std::error_code ec; 22 fs::remove_all(path, ec); 23 } 24 } 25 26 RemovablePath(const RemovablePath& other) = delete; 27 RemovablePath& operator=(const RemovablePath& other) = delete; 28 RemovablePath(RemovablePath&&) = delete; 29 RemovablePath& operator=(RemovablePath&&) = delete; 30 }; 31 32 /** @brief Untar the image 33 * @param[in] imageFd - The file descriptor of the image to untar. 34 * @param[in] extractDirPath - The destination directory for the untarred 35 * image. 36 * @param[out] bool - The result of the untar operation. 37 */ 38 bool unTar(int imageFd, const std::string& extractDirPath); 39 40 } // namespace phosphor::software::utils 41 42 boost::asio::io_context& getIOContext(); 43