diff --git a/src/stat_cache.c b/src/stat_cache.c index 61f1cb1f..e46386c2 100644 --- a/src/stat_cache.c +++ b/src/stat_cache.c @@ -1048,6 +1048,11 @@ stat_cache_entry * stat_cache_get_entry(const buffer *name) { return sce; } +int stat_cache_path_isdir(const buffer *name) { + const stat_cache_entry * const sce = stat_cache_get_entry(name); + return (sce && (S_ISDIR(sce->st.st_mode) ? 1 : (errno = ENOTDIR, 0))); +} + int stat_cache_path_contains_symlink(const buffer *name, log_error_st *errh) { /* caller should check for symlinks only if we should block symlinks. */ diff --git a/src/stat_cache.h b/src/stat_cache.h index a7341820..bc942800 100644 --- a/src/stat_cache.h +++ b/src/stat_cache.h @@ -50,6 +50,7 @@ void stat_cache_delete_entry(const char *name, uint32_t len); void stat_cache_delete_dir(const char *name, uint32_t len); void stat_cache_invalidate_entry(const char *name, uint32_t len); stat_cache_entry * stat_cache_get_entry(const buffer *name); +int stat_cache_path_isdir(const buffer *name); __attribute_cold__ int stat_cache_path_contains_symlink(const buffer *name, log_error_st *errh);