From a03412e91a80f762aff266a6c9e9a1f6f206942b Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 12 Jan 2024 16:15:22 +0100 Subject: [PATCH] Revert "In updatedb, check prunepaths _before_ opening the directory." This reverts commit 6e7991e5e0e043c412638c140cc9bb5610db4668. David Caldwell pointed out that this breaks prunepaths that are not directly on the root, since we now get /b before /a/a and this breaks the expectation that the prunepaths list is iterated through in order. --- updatedb.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/updatedb.cpp b/updatedb.cpp index 6f88c94..cfdd3af 100644 --- a/updatedb.cpp +++ b/updatedb.cpp @@ -522,6 +522,13 @@ string ExistingDB::read_next_dictionary() const // Takes ownership of fd. int scan(const string &path, int fd, dev_t parent_dev, dir_time modified, dir_time db_modified, ExistingDB *existing_db, DatabaseReceiver *corpus, DictionaryBuilder *dict_builder) { + if (string_list_contains_dir_path(&conf_prunepaths, &conf_prunepaths_index, path)) { + if (conf_debug_pruning) { + fprintf(stderr, "Skipping `%s': in prunepaths\n", path.c_str()); + } + close(fd); + return 0; + } if (conf_prune_bind_mounts && is_bind_mount(path.c_str())) { if (conf_debug_pruning) { fprintf(stderr, "Skipping `%s': bind mount\n", path.c_str()); @@ -676,12 +683,6 @@ int scan(const string &path, int fd, dev_t parent_dev, dir_time modified, dir_ti } continue; } - if (string_list_contains_dir_path(&conf_prunepaths, &conf_prunepaths_index, (path_plus_slash + e.name).c_str())) { - if (conf_debug_pruning) { - fprintf(stderr, "Skipping `%s/%s': in prunepaths\n", path.c_str(), e.name.c_str()); - } - continue; - } e.fd = opendir_noatime(fd, e.name.c_str()); if (e.fd == -1) { -- 2.39.2