Skip to content

Commit 3e4ffda

Browse files
jeffhostetlergitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 8687c2b commit 3e4ffda

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

dir.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3918,6 +3918,26 @@ void untracked_cache_invalidate_path(struct index_state *istate,
39183918
path, strlen(path));
39193919
}
39203920

3921+
void untracked_cache_invalidate_trimmed_path(struct index_state *istate,
3922+
const char *path,
3923+
int safe_path)
3924+
{
3925+
size_t len = strlen(path);
3926+
3927+
if (!len)
3928+
BUG("untracked_cache_invalidate_trimmed_path given zero length path");
3929+
3930+
if (path[len - 1] != '/') {
3931+
untracked_cache_invalidate_path(istate, path, safe_path);
3932+
} else {
3933+
struct strbuf tmp = STRBUF_INIT;
3934+
3935+
strbuf_add(&tmp, path, len - 1);
3936+
untracked_cache_invalidate_path(istate, tmp.buf, safe_path);
3937+
strbuf_release(&tmp);
3938+
}
3939+
}
3940+
39213941
void untracked_cache_remove_from_index(struct index_state *istate,
39223942
const char *path)
39233943
{

dir.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,13 @@ int cmp_dir_entry(const void *p1, const void *p2);
576576
int check_dir_entry_contains(const struct dir_entry *out, const struct dir_entry *in);
577577

578578
void untracked_cache_invalidate_path(struct index_state *, const char *, int safe_path);
579+
/*
580+
* Invalidate the untracked-cache for this path, but first strip
581+
* off a trailing slash, if present.
582+
*/
583+
void untracked_cache_invalidate_trimmed_path(struct index_state *,
584+
const char *path,
585+
int safe_path);
579586
void untracked_cache_remove_from_index(struct index_state *, const char *);
580587
void untracked_cache_add_to_index(struct index_state *, const char *);
581588

0 commit comments

Comments
 (0)