aboutsummaryrefslogtreecommitdiff
path: root/src/Storage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Storage.cpp')
-rw-r--r--src/Storage.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Storage.cpp b/src/Storage.cpp
index 086f6d8..dadff5b 100644
--- a/src/Storage.cpp
+++ b/src/Storage.cpp
@@ -157,6 +157,15 @@ namespace QuickMedia {
return file_overwrite(path, data.c_str(), data.size());
}
+ int file_overwrite_atomic(const Path &path, const std::string &data) {
+ Path tmp_path = path;
+ tmp_path.append(".tmp");
+ int res = file_overwrite(tmp_path, data.c_str(), data.size());
+ if(res != 0)
+ return res;
+ return rename(tmp_path.data.c_str(), path.data.c_str());
+ }
+
void for_files_in_dir(const Path &path, FileIteratorCallback callback) {
try {
for(auto &p : std::filesystem::directory_iterator(path.data)) {