Re: [PATCH v2 07/16] dir: create untracked_cache_invalidate_trimmed_path()
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Feb 25, 2024, 12:35 UTC
- Message-ID
- <20240225123527.GB1952@tb-raspi4>
- In-Reply-To
- <99c0d3e0742c1a7e0f7608707402a772ec112716.1708658300.git.gitgitgadget@gmail.com>
On Fri, Feb 23, 2024 at 03:18:11AM +0000, Jeff Hostetler via GitGitGadget wrote:
Show 35 quoted lines
> From: Jeff Hostetler <jeffhostetler@github.com>
>
> 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>
> ---
> dir.c | 20 ++++++++++++++++++++
> dir.h | 7 +++++++
> 2 files changed, 27 insertions(+)
>
> diff --git a/dir.c b/dir.c
> index ac699542302..1157f3e43fa 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -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)
> + return; /* should not happen */Should a BUG() be used ? Or bug(), for the record: Please see Documentation/technical/api-error-handling.txt
Show 37 quoted lines
> +
> + 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)
> {
> diff --git a/dir.h b/dir.h
> index 98aa85fcc0e..45a7b9ec5f2 100644
> --- a/dir.h
> +++ b/dir.h
> @@ -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 *);
>
> --
> gitgitgadget
>
>