diff options
Diffstat (limited to 'libcommon/tempfile.cpp')
-rw-r--r-- | libcommon/tempfile.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libcommon/tempfile.cpp b/libcommon/tempfile.cpp index c30bb57..f425db2 100644 --- a/libcommon/tempfile.cpp +++ b/libcommon/tempfile.cpp @@ -14,10 +14,15 @@ fs::path Tempfile::GetPath() const return m_path; } -Tempfile::Tempfile() { +Tempfile::Tempfile(const std::filesystem::path& extension) +{ try { - char name[] = "/tmp/tempfileXXXXXX.zip"; - int fd = mkstemps(name, 4); + fs::path path { fs::temp_directory_path() / "tempfileXXXXXX"}; + if (!extension.empty()) + path += extension; + + fs::path::string_type name{path.native()}; + int fd = mkstemps(name.data(), extension.native().size()); if (fd == -1) std::runtime_error("mkstemps: "s + strerror(errno)); close(fd); @@ -27,7 +32,8 @@ Tempfile::Tempfile() { } } -Tempfile::~Tempfile() { +Tempfile::~Tempfile() +{ try { fs::remove_all(m_path); } catch (const std::exception& ex) { |