From 57185c6da99552fd14d3c0aa3cc0ee6c879b453f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 21 May 2024 03:43:57 -0500 Subject: [PATCH] backup management, part 3 Windows --- src/gui/settings.cpp | 54 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2739c2011..af4d44c5a 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -35,6 +35,9 @@ #include #ifdef _WIN32 +#include +#include +#include #else #include #include @@ -433,7 +436,35 @@ bool FurnaceGUI::splitBackupName(const char* input, String& backupName, struct t void FurnaceGUI::purgeBackups(int year, int month, int day) { #ifdef _WIN32 - // I will do it later... + String findPath=backupPath+String(DIR_SEPARATOR_STR)+String("*.fur"); + WString findPathW=utf8To16(findPath.c_str()); + WIN32_FIND_DATAW next; + HANDLE backDir=FindFirstFileW(findPathW.c_str(),&next); + if (backDir!=INVALID_HANDLE_VALUE) { + do { + String backupName; + struct tm backupTime; + String cFileNameU=utf16To8(next.cFileName); + bool deleteBackup=false; + if (!splitBackupName(cFileNameU.c_str(),backupName,backupTime)) continue; + + if (year==0) { + deleteBackup=true; + } else if (backupTime.tm_year<(year-1900)) { + deleteBackup=true; + } else if (backupTime.tm_year==(year-1900) && backupTime.tm_mon<(month-1)) { + deleteBackup=true; + } else if (backupTime.tm_year==(year-1900) && backupTime.tm_mon==(month-1) && backupTime.tm_mday