From: Michael Tremer Date: Thu, 8 Dec 2022 15:09:58 +0000 (+0000) Subject: file: Add a function to check whether the path matches a pattern X-Git-Tag: 0.9.28~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c064d9ec43721950de8eb518fb4e034dd4f24c66;p=pakfire.git file: Add a function to check whether the path matches a pattern Signed-off-by: Michael Tremer --- 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;