Skip to content

Commit

Permalink
fsmonitor: return invalidated cache-entry count on non-directory event
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
jeffhostetler authored and gitster committed Mar 6, 2024
1 parent 558d146 commit 9e34e56
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions fsmonitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
/*
Expand All @@ -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;

/*
Expand All @@ -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;
}
}

Expand Down

0 comments on commit 9e34e56

Please sign in to comment.