]> git.ipfire.org Git - pakfire.git/commitdiff
dist: Don't package directories
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 25 Aug 2023 12:51:37 +0000 (12:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 25 Aug 2023 12:51:37 +0000 (12:51 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/dist.c
src/libpakfire/filelist.c
src/libpakfire/include/pakfire/filelist.h

index 77bb3449b93e68b7719537d5d3f9a23e6df69437..860c3d5aff7590c12a70e41e0b006fb398f83f31 100644 (file)
@@ -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;
 
index faa9ca71db734136ef9a4f70f0fb86e6efa4bd0b..f63ddafaf989bab1a284db8af9b8f5f0424fc4f6 100644 (file)
@@ -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))
index f4a286340b27157cc22a131bf276a656efc48513..835610751ef64c993f9e2f431dc3129d79bec0fb 100644 (file)
@@ -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,