aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Hostetler <jeffhostetler@github.com>2024-02-26 21:39:22 +0000
committerJunio C Hamano <gitster@pobox.com>2024-03-06 09:10:00 -0800
commit9e34e562805986b1ed0d1518a5822b9ec495960b (patch)
tree84a23a2b33f8f1937768f6a2d422d8e0db0f7418
parent558d146d13e2632aa9cd580cbfb81fbf635c3566 (diff)
downloadgit-9e34e562805986b1ed0d1518a5822b9ec495960b.tar.xz
fsmonitor: return invalidated cache-entry count on non-directory event
Teach the refresh callback helper function for unqualified FSEvents (pathnames without a trailing slash) to return the number of cache-entries that were invalided in response to the event. This will be used in a later commit to help determine if the observed pathname was (possibly) case-incorrect when (on a case-insensitive file system). Signed-off-by: Jeff Hostetler <jeffhostetler@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--fsmonitor.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fsmonitor.c b/fsmonitor.c
index a51c17cda7..c16ed5d875 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -196,8 +196,10 @@ static size_t handle_path_with_trailing_slash(
* do not know it is case-correct or -incorrect.
*
* Assume it is case-correct and try an exact match.
+ *
+ * Return the number of cache-entries that we invalidated.
*/
-static void handle_path_without_trailing_slash(
+static size_t handle_path_without_trailing_slash(
struct index_state *istate, const char *name, int pos)
{
/*
@@ -218,7 +220,9 @@ static void handle_path_without_trailing_slash(
* at that directory. (That is, assume no D/F conflicts.)
*/
istate->cache[pos]->ce_flags &= ~CE_FSMONITOR_VALID;
+ return 1;
} else {
+ size_t nr_in_cone;
struct strbuf work_path = STRBUF_INIT;
/*
@@ -232,8 +236,10 @@ static void handle_path_without_trailing_slash(
strbuf_add(&work_path, name, strlen(name));
strbuf_addch(&work_path, '/');
pos = index_name_pos(istate, work_path.buf, work_path.len);
- handle_path_with_trailing_slash(istate, work_path.buf, pos);
+ nr_in_cone = handle_path_with_trailing_slash(
+ istate, work_path.buf, pos);
strbuf_release(&work_path);
+ return nr_in_cone;
}
}