summaryrefslogtreecommitdiffhomepage
path: root/libcommon/tempfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcommon/tempfile.cpp')
-rw-r--r--libcommon/tempfile.cpp14
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) {