From 31a1df678354b24bb0be018886f8f3b4736b929f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 7 Sep 2023 14:22:20 +0000 Subject: [PATCH] filelist: Don't fail scan when the path does not exist I believe this is what we mostly want. Signed-off-by: Michael Tremer --- src/libpakfire/filelist.c | 13 +++++++++++-- src/libpakfire/include/pakfire/repo.h | 4 ---- src/libpakfire/repo.c | 8 +------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/libpakfire/filelist.c b/src/libpakfire/filelist.c index f63ddafaf..d44b7964a 100644 --- a/src/libpakfire/filelist.c +++ b/src/libpakfire/filelist.c @@ -288,6 +288,7 @@ static int pakfire_filelist_scan_filter(struct archive* archive, void* p, int pakfire_filelist_scan(struct pakfire_filelist* list, const char* root, const char** includes, const char** excludes, int flags) { + struct archive* reader = NULL; struct pakfire_file* file = NULL; struct archive_entry* entry = NULL; struct pakfire_filelist_matches matches = { @@ -320,8 +321,15 @@ int pakfire_filelist_scan(struct pakfire_filelist* list, const char* root, DEBUG(list->pakfire, " %s\n", *exclude); } + // Check if the path exists + if (!pakfire_path_exists(root)) { + DEBUG(list->pakfire, "Path to scan (%s) does not exist\n", root); + r = 0; + goto ERROR; + } + // Create a new disk reader - struct archive* reader = pakfire_make_archive_disk_reader(list->pakfire, 1); + reader = pakfire_make_archive_disk_reader(list->pakfire, 1); if (!reader) goto ERROR; @@ -380,7 +388,8 @@ int pakfire_filelist_scan(struct pakfire_filelist* list, const char* root, } ERROR: - archive_read_free(reader); + if (reader) + archive_read_free(reader); return r; } diff --git a/src/libpakfire/include/pakfire/repo.h b/src/libpakfire/include/pakfire/repo.h index d72a8d7b3..982e51ca4 100644 --- a/src/libpakfire/include/pakfire/repo.h +++ b/src/libpakfire/include/pakfire/repo.h @@ -81,10 +81,6 @@ int pakfire_repo_clean(struct pakfire_repo* repo, int flags); // Scan -enum pakfire_repo_scan_flags { - PAKFIRE_REPO_SCAN_IGNORE_NOENT = (1 << 0), -}; - int pakfire_repo_scan(struct pakfire_repo* repo, int flags); // Refresh diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 9bf4c92a4..e2e80d63a 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -407,7 +407,7 @@ static int pakfire_repo_read_metadata(struct pakfire_repo* repo, const char* pat DEBUG(repo->pakfire, "No metadata available on local repository." " Falling back to scan...\n"); - return pakfire_repo_scan(repo, PAKFIRE_REPO_SCAN_IGNORE_NOENT); + return pakfire_repo_scan(repo, 0); } break; } @@ -1317,12 +1317,6 @@ PAKFIRE_EXPORT int pakfire_repo_scan(struct pakfire_repo* repo, int flags) { return 1; } - // Check if path exists - if (!pakfire_path_exists(path)) { - if (flags & PAKFIRE_REPO_SCAN_IGNORE_NOENT) - return 0; - } - // Create a new filelist r = pakfire_filelist_create(&filelist, repo->pakfire); if (r) -- 2.39.5