From 91476fb1dd38562f3127ba5522578ff6fdee45f8 Mon Sep 17 00:00:00 2001 From: Tobias Weimer Date: Fri, 12 Dec 2014 09:14:43 +0000 Subject: db_autobackups: -Fix for #847 git-svn-id: http://svn.miranda-ng.org/main/trunk@11341 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db_autobackups/src/backup.cpp | 50 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 26 deletions(-) (limited to 'plugins/Db_autobackups/src') 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; } -- cgit v1.2.3