]> git.ipfire.org Git - pakfire.git/commitdiff
file: Add a function to check whether the path matches a pattern
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 8 Dec 2022 15:09:58 +0000 (15:09 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 8 Dec 2022 15:09:58 +0000 (15:09 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/file.c
src/libpakfire/include/pakfire/file.h
src/libpakfire/libpakfire.sym

index e29e91058911d39ba9dda394ebf25a8a34ba87ee..de92f4e47bb825478ce3ac202f5ec01e78da8fd8 100644 (file)
@@ -19,6 +19,7 @@
 #############################################################################*/
 
 #include <errno.h>
+#include <fnmatch.h>
 #include <libgen.h>
 #include <limits.h>
 #include <linux/limits.h>
@@ -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;
+       }
+}
index 8e71849c989fd8ad4561ced6b04fcdc32141a327..3dcae33a3cb8acf443d21f636eb63390c411894c 100644 (file)
@@ -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 <archive_entry.h>
index 609166e14bbcc9cd5bcf620df7944b7ff65f508a..71f1608a3b557c1c17a44108ed7e3cf19f07b4b2 100644 (file)
@@ -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;