return 0;
}
-PAKFIRE_EXPORT void pakfire_filelist_sort(struct pakfire_filelist* list) {
- return; // XXX NOOP - filelists are now always sorted
+static int pakfire_filelist_remove(struct pakfire_filelist* list, struct pakfire_file* file) {
+ struct pakfire_filelist_element* element = NULL;
+
+ TAILQ_FOREACH(element, &list->files, nodes) {
+ if (element->file == file) {
+ // Remove the element from the list
+ TAILQ_REMOVE(&list->files, element, nodes);
+
+ // Free the element
+ pakfire_file_unref(element->file);
+ free(element);
+
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+static int __pakfire_filelist_remove_one(
+ struct pakfire* pakfire, struct pakfire_file* file, void* data) {
+ struct pakfire_filelist* list = (struct pakfire_filelist*)data;
+
+ // Remove the file from the given filelist
+ return pakfire_filelist_remove(list, file);
+}
+
+int pakfire_filelist_remove_all(
+ struct pakfire_filelist* list, struct pakfire_filelist* removees) {
+ return pakfire_filelist_walk(removees, __pakfire_filelist_remove_one, list);
}
// Returns true if s contains globbing characters
size_t pakfire_filelist_total_size(struct pakfire_filelist* list);
+int pakfire_filelist_remove_all(struct pakfire_filelist* list,
+ struct pakfire_filelist* removees);
+
int pakfire_filelist_scan(struct pakfire_filelist* list, const char* root,
const char** includes, const char** excludes);