]> git.ipfire.org Git - pakfire.git/commitdiff
packagelist: Add helper function to check if a certain path is on the list
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 30 Jan 2025 20:50:05 +0000 (20:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 30 Jan 2025 20:50:05 +0000 (20:50 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/packagelist.c
src/pakfire/packagelist.h

index 2bbc7e95445408ba9748e63cba5ff77ecc1ee2d4..5c1614cabc097def7f732aecb9afccb405baf167 100644 (file)
@@ -28,6 +28,8 @@
 #include <pakfire/package.h>
 #include <pakfire/packagelist.h>
 #include <pakfire/pakfire.h>
+#include <pakfire/string.h>
+#include <pakfire/util.h>
 
 struct pakfire_packagelist {
        struct pakfire_ctx* ctx;
@@ -206,3 +208,19 @@ int pakfire_packagelist_import_solvables(struct pakfire_packagelist* self,
 
        return 0;
 }
+
+static int __pakfire_packagelist_has_path(
+               struct pakfire_ctx* ctx, struct pakfire_package* pkg, void* data) {
+       const char* path = data;
+
+       // Fetch the path where we would expect this package to be
+       const char* pkg_path = pakfire_package_get_path(pkg);
+       if (unlikely(!pkg_path))
+               return -EINVAL;
+
+       return pakfire_string_equals(pkg_path, path);
+}
+
+int pakfire_packagelist_has_path(struct pakfire_packagelist* self, const char* path) {
+       return pakfire_packagelist_walk(self, __pakfire_packagelist_has_path, (char*)path, 0);
+}
index d8e2f677d087006a82dcacf7b006cf9b8d171dda..962cb565d8d0565c3a38bb3462b1ef0592fdd003 100644 (file)
@@ -51,4 +51,6 @@ int pakfire_packagelist_walk(struct pakfire_packagelist* list,
 int pakfire_packagelist_import_solvables(struct pakfire_packagelist* list,
        struct pakfire* pakfire, Queue* q);
 
+int pakfire_packagelist_has_path(struct pakfire_packagelist* self, const char* path);
+
 #endif /* PAKFIRE_PACKAGELIST_H */