From c064d9ec43721950de8eb518fb4e034dd4f24c66 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 8 Dec 2022 15:09:58 +0000 Subject: [PATCH] file: Add a function to check whether the path matches a pattern Signed-off-by: Michael Tremer --- src/libpakfire/file.c | 24 ++++++++++++++++++++++++ src/libpakfire/include/pakfire/file.h | 2 ++ src/libpakfire/libpakfire.sym | 1 + 3 files changed, 27 insertions(+) diff --git a/src/libpakfire/file.c b/src/libpakfire/file.c index e29e91058..de92f4e47 100644 --- a/src/libpakfire/file.c +++ b/src/libpakfire/file.c @@ -19,6 +19,7 @@ #############################################################################*/ #include +#include #include #include #include @@ -1137,3 +1138,26 @@ int pakfire_file_verify(struct pakfire_file* file, int* status) { return 0; } + +PAKFIRE_EXPORT int pakfire_file_matches(struct pakfire_file* file, const char* pattern) { + int r; + + // Don't match on no pattern + if (!pattern) + return 0; + + // Check if the pattern matches + r = fnmatch(pattern, file->path, 0); + switch (r) { + // Match + case 0: + return 1; + + // No Match + case FNM_NOMATCH: + return 0; + + default: + return -1; + } +} diff --git a/src/libpakfire/include/pakfire/file.h b/src/libpakfire/include/pakfire/file.h index 8e71849c9..3dcae33a3 100644 --- a/src/libpakfire/include/pakfire/file.h +++ b/src/libpakfire/include/pakfire/file.h @@ -85,6 +85,8 @@ int pakfire_file_set_digest(struct pakfire_file* file, struct pakfire_file* pakfire_file_parse_from_file(const char* list, unsigned int format); +int pakfire_file_matches(struct pakfire_file* file, const char* pattern); + #ifdef PAKFIRE_PRIVATE #include diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 609166e14..71f1608a3 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -97,6 +97,7 @@ global: pakfire_file_get_time; pakfire_file_get_type; pakfire_file_get_uname; + pakfire_file_matches; pakfire_file_set_ctime; pakfire_file_set_dev; pakfire_file_set_digest; -- 2.39.5