diff --git a/include/swupd.h b/include/swupd.h index 3e1c58ac..0bfddb08 100644 --- a/include/swupd.h +++ b/include/swupd.h @@ -257,6 +257,7 @@ void delete_motd(void); extern int get_dirfd_path(const char *fullname); extern int verify_fix_path(char *targetpath, struct manifest *manifest); extern void set_local_download(void); +extern struct list *files_from_bundles(struct list *bundles); /* subscription.c */ struct list *free_list_file(struct list *item); diff --git a/src/helpers.c b/src/helpers.c index 4c5036d7..a88c10e8 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -851,3 +851,24 @@ void set_local_download(void) return; } + +struct list *files_from_bundles(struct list *bundles) +{ + struct list *files = NULL; + struct list *list; + struct manifest *bundle; + + list = list_head(bundles); + while (list) { + struct list *bfiles; + bundle = list->data; + list = list->next; + if (!bundle) { + continue; + } + bfiles = list_clone(bundle->files); + files = list_concat(bfiles, files); + } + + return files; +}