Use binary streams to make DB backups, since filesystem has low compat

This commit is contained in:
Gent S 2020-12-20 15:52:34 -05:00
parent 2e173df2ca
commit ea12ec9607

View File

@ -16,7 +16,6 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <filesystem>
#if defined(__MINGW32__) && !defined(_GLIBCXX_HAS_GTHREADS)
#include "mingw/mingw.mutex.h"
@ -137,14 +136,13 @@ void Database::checkMetaTable() {
exit(1);
} else if (dbVersion < DATABASE_VERSION) {
// we're gonna migrate; back up the DB
try {
std::cout << "[INFO] Backing up database" << std::endl;
std::filesystem::copy_file(settings::DBPATH, settings::DBPATH + ".old." + std::to_string(dbVersion));
}
catch (std::filesystem::filesystem_error& e) {
std::cout << "[FATAL] Failed to backup database before migration" << std::endl;
exit(1);
}
// copy db file over using binary streams
std::ifstream src(settings::DBPATH, std::ios::binary);
std::ofstream dst(settings::DBPATH + ".old." + std::to_string(dbVersion), std::ios::binary);
dst << src.rdbuf();
src.close();
dst.close();
}
while (dbVersion != DATABASE_VERSION) {