[1/2] [gnc-filepath-utils.cpp] gnc_filename_is_backup|datafile

uses std::regex to test filename
This commit is contained in:
Christopher Lam 2023-03-16 09:36:38 +08:00
parent 267aa4bf42
commit dd0d65d861
3 changed files with 33 additions and 0 deletions

View File

@ -66,6 +66,7 @@
#include "gnc-locale-utils.hpp"
#include <boost/filesystem.hpp>
#include <boost/locale.hpp>
#include <regex>
#include <iostream>
#include <numeric>
@ -1326,4 +1327,21 @@ gnc_list_all_paths (void)
return std::accumulate (paths.rbegin(), paths.rend(), (GList*) nullptr, accum);
}
static const std::regex
backup_regex (".*[.](?:xac|gnucash)[.][0-9]{14}[.](?:xac|gnucash)$");
gboolean gnc_filename_is_backup (const char *filename)
{
return std::regex_match (filename, backup_regex);
}
static const std::regex
datafile_regex (".*[.](?:xac|gnucash)$");
gboolean gnc_filename_is_datafile (const char *filename)
{
return !gnc_filename_is_backup (filename) &&
std::regex_match (filename, datafile_regex);
}
/* =============================== END OF FILE ========================== */

View File

@ -194,6 +194,10 @@ typedef struct
*/
GList *gnc_list_all_paths (void);
gboolean gnc_filename_is_backup (const char *filename);
gboolean gnc_filename_is_datafile (const char *filename);
#ifdef __cplusplus
}
#endif

View File

@ -121,3 +121,14 @@ TEST_F(PathTest, gnc_path_get_sysconfdir)
g_free(sysconfpath);
#endif
}
TEST_F (PathTest, gnc_filename_is_backup)
{
EXPECT_EQ (gnc_filename_is_backup (""), false);
EXPECT_EQ (gnc_filename_is_backup ("a.gnucash"), false);
EXPECT_EQ (gnc_filename_is_backup ("a.gnucash.20201131010203.gnucash"), true);
EXPECT_EQ (gnc_filename_is_datafile (""), false);
EXPECT_EQ (gnc_filename_is_datafile ("a.gnucash"), true);
EXPECT_EQ (gnc_filename_is_datafile ("a.gnucash.20201131010203.gnucash"), false);
}