#include "git-compat-util.h"
#include "gettext.h"
#include "setup.h"
#include "symlinks.h"
static int threaded_check_leading_path(struct cache_def *cache, const char *name,
int len, int warn_on_lstat_err);
static int threaded_has_dirs_only_path(struct cache_def *cache, const char *name, int len, int prefix_len);
static int longest_path_match(const char *name_a, int len_a,
const char *name_b, int len_b,
int *previous_slash)
{ … }
static struct cache_def default_cache = …;
static inline void reset_lstat_cache(struct cache_def *cache)
{ … }
#define FL_DIR …
#define FL_NOENT …
#define FL_SYMLINK …
#define FL_LSTATERR …
#define FL_ERR …
#define FL_FULLPATH …
static int lstat_cache_matchlen(struct cache_def *cache,
const char *name, int len,
int *ret_flags, int track_flags,
int prefix_len_stat_func)
{ … }
static int lstat_cache(struct cache_def *cache, const char *name, int len,
int track_flags, int prefix_len_stat_func)
{ … }
#define USE_ONLY_LSTAT …
int threaded_has_symlink_leading_path(struct cache_def *cache, const char *name, int len)
{ … }
int has_symlink_leading_path(const char *name, int len)
{ … }
int check_leading_path(const char *name, int len, int warn_on_lstat_err)
{ … }
static int threaded_check_leading_path(struct cache_def *cache, const char *name,
int len, int warn_on_lstat_err)
{ … }
int has_dirs_only_path(const char *name, int len, int prefix_len)
{ … }
static int threaded_has_dirs_only_path(struct cache_def *cache, const char *name, int len, int prefix_len)
{ … }
static struct strbuf removal = …;
static void do_remove_scheduled_dirs(int new_len)
{ … }
void schedule_dir_for_removal(const char *name, int len)
{ … }
void remove_scheduled_dirs(void)
{ … }
void invalidate_lstat_cache(void)
{ … }
#undef rmdir
int lstat_cache_aware_rmdir(const char *path)
{ … }