From: Michael Tremer Date: Fri, 25 Aug 2023 12:51:37 +0000 (+0000) Subject: dist: Don't package directories X-Git-Tag: 0.9.29~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6f1c578b6b02c0db6c2b35101e36b43ad9f30005;p=pakfire.git dist: Don't package directories Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/dist.c b/src/libpakfire/dist.c index 77bb3449b..860c3d5af 100644 --- a/src/libpakfire/dist.c +++ b/src/libpakfire/dist.c @@ -364,7 +364,8 @@ static int pakfire_dist_add_files(struct pakfire* pakfire, goto ERROR; // Scan for any files - r = pakfire_filelist_scan(filelist, root, NULL, pakfire_dist_excludes, 0); + r = pakfire_filelist_scan(filelist, root, NULL, pakfire_dist_excludes, + PAKFIRE_FILELIST_NO_DIRECTORIES); if (r) goto ERROR; diff --git a/src/libpakfire/filelist.c b/src/libpakfire/filelist.c index faa9ca71d..f63ddafaf 100644 --- a/src/libpakfire/filelist.c +++ b/src/libpakfire/filelist.c @@ -262,6 +262,14 @@ static int pakfire_filelist_scan_filter(struct archive* archive, void* p, if (!path || !*path) return 0; + // Should we skip any directories? + if (matches->flags & PAKFIRE_FILELIST_NO_DIRECTORIES) { + mode_t filetype = archive_entry_filetype(entry); + + if (filetype == S_IFDIR) + return 0; + } + // Skip excludes if (matches->excludes && pakfire_filelist_match_patterns(path, matches->excludes, matches->flags)) diff --git a/src/libpakfire/include/pakfire/filelist.h b/src/libpakfire/include/pakfire/filelist.h index f4a286340..835610751 100644 --- a/src/libpakfire/include/pakfire/filelist.h +++ b/src/libpakfire/include/pakfire/filelist.h @@ -49,6 +49,7 @@ int pakfire_filelist_remove_all(struct pakfire_filelist* list, enum pakfire_filelist_scan_flags { PAKFIRE_FILELIST_EXTENDED_MATCHING = (1 << 0), + PAKFIRE_FILELIST_NO_DIRECTORIES = (1 << 1), }; int pakfire_filelist_scan(struct pakfire_filelist* list, const char* root,