dir: create untracked_cache_invalidate_trimmed_path()

Create a wrapper function for untracked_cache_invalidate_path()
that silently trims a trailing slash, if present, before calling
the wrapped function.

The untracked cache expects to be called with a pathname that
does not contain a trailing slash.  This can make it inconvenient
for callers that have a directory path.  Lets hide this complexity.

This will be used by a later commit in the FSMonitor code which
may receive directory pathnames from an FSEvent.

Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff Hostetler 2024-02-26 21:39:17 +00:00 committed by Junio C Hamano
parent 8687c2b067
commit 3e4ffda639
2 changed files with 27 additions and 0 deletions

20
dir.c
View File

@ -3918,6 +3918,26 @@ void untracked_cache_invalidate_path(struct index_state *istate,
path, strlen(path));
}
void untracked_cache_invalidate_trimmed_path(struct index_state *istate,
const char *path,
int safe_path)
{
size_t len = strlen(path);
if (!len)
BUG("untracked_cache_invalidate_trimmed_path given zero length path");
if (path[len - 1] != '/') {
untracked_cache_invalidate_path(istate, path, safe_path);
} else {
struct strbuf tmp = STRBUF_INIT;
strbuf_add(&tmp, path, len - 1);
untracked_cache_invalidate_path(istate, tmp.buf, safe_path);
strbuf_release(&tmp);
}
}
void untracked_cache_remove_from_index(struct index_state *istate,
const char *path)
{

7
dir.h
View File

@ -576,6 +576,13 @@ int cmp_dir_entry(const void *p1, const void *p2);
int check_dir_entry_contains(const struct dir_entry *out, const struct dir_entry *in);
void untracked_cache_invalidate_path(struct index_state *, const char *, int safe_path);
/*
* Invalidate the untracked-cache for this path, but first strip
* off a trailing slash, if present.
*/
void untracked_cache_invalidate_trimmed_path(struct index_state *,
const char *path,
int safe_path);
void untracked_cache_remove_from_index(struct index_state *, const char *);
void untracked_cache_add_to_index(struct index_state *, const char *);