summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/Db_autobackups/src/backup.cpp50
1 files changed, 24 insertions, 26 deletions
diff --git a/plugins/Db_autobackups/src/backup.cpp b/plugins/Db_autobackups/src/backup.cpp
index 2ef45183dd..792b02bdba 100644
--- a/plugins/Db_autobackups/src/backup.cpp
+++ b/plugins/Db_autobackups/src/backup.cpp
@@ -175,34 +175,32 @@ int RotateBackups(TCHAR *backupfolder, TCHAR *dbname)
{
size_t i = 0;
backupFile *bf = NULL, *bftmp;
- HANDLE hFind;
- WIN32_FIND_DATA FindFileData;
TCHAR backupfolderTmp[MAX_PATH];
-
- mir_sntprintf(backupfolderTmp, SIZEOF(backupfolderTmp), _T("%s\\%s*"), backupfolder, dbname);
- hFind = FindFirstFile(backupfolderTmp, &FindFileData);
- if (hFind == INVALID_HANDLE_VALUE)
- goto err_out;
- do {
- if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- continue;
- bftmp = (backupFile*)mir_realloc(bf, ((i + 1) * sizeof(backupFile)));
- if (bftmp == NULL)
- goto err_out;
- bf = bftmp;
- _tcsncpy_s(bf[i].Name, FindFileData.cFileName, _TRUNCATE);
- bf[i].CreationTime = FindFileData.ftCreationTime;
- i ++;
- } while (FindNextFile(hFind, &FindFileData));
-
- if (i > 0)
- qsort(bf, i, sizeof(backupFile), Comp); //Sort the list of found files by date in descending order
- for (i --; i >= (options.num_backups - 1); i --) {
- mir_sntprintf(backupfolderTmp, SIZEOF(backupfolderTmp), _T("%s\\%s"), backupfolder, bf[i].Name);
- DeleteFile(backupfolderTmp);
+ mir_sntprintf(backupfolderTmp, MAX_PATH, _T("%s\\%s*"), backupfolder, dbname);
+ WIN32_FIND_DATA FindFileData;
+ HANDLE hFind = FindFirstFile(backupfolderTmp, &FindFileData);
+ if (hFind != INVALID_HANDLE_VALUE) {
+ do {
+ if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ continue;
+ bftmp = (backupFile*)mir_realloc(bf, ((i + 1) * sizeof(backupFile)));
+ if (bftmp == NULL) {
+ mir_free(bf);
+ return 0;
+ }
+ bf = bftmp;
+ _tcsncpy_s(bf[i].Name, FindFileData.cFileName, _TRUNCATE);
+ bf[i++].CreationTime = FindFileData.ftCreationTime;
+ } while (FindNextFile(hFind, &FindFileData));
+
+ if (i > 0)
+ qsort(bf, i, sizeof(backupFile), Comp); //Sort the list of found files by date in descending order
+ for (i --; i >= (options.num_backups - 1); i --) {
+ mir_sntprintf(backupfolderTmp, MAX_PATH, _T("%s\\%s"), backupfolder, bf[i].Name);
+ DeleteFile(backupfolderTmp);
+ }
+ FindClose(hFind);
}
-err_out:
- FindClose(hFind);
mir_free(bf);
return 0;
}