diff options
author | Elijah Newren <newren@gmail.com> | 2023-05-16 09:33:56 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-06-21 23:39:53 +0300 |
commit | 08c46a499aec5b6459fb1d55ff90403c7dc2ee5a (patch) | |
tree | 8fdf8c5a68738d18a93e5c7e0b1a3bc8ef1bc06c /read-cache.h | |
parent | bc47f16db2bccb0398edd93af27086f35a3cb97a (diff) |
read-cache*.h: move declarations for read-cache.c functions from cache.h
For the functions defined in read-cache.c, move their declarations from
cache.h to a new header, read-cache-ll.h. Also move some related inline
functions from cache.h to read-cache.h. The purpose of the
read-cache-ll.h/read-cache.h split is that about 70% of the sites don't
need the inline functions and the extra headers they include.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'read-cache.h')
-rw-r--r-- | read-cache.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/read-cache.h b/read-cache.h new file mode 100644 index 0000000000..043da1f1aa --- /dev/null +++ b/read-cache.h @@ -0,0 +1,45 @@ +#ifndef READ_CACHE_H +#define READ_CACHE_H + +#include "read-cache-ll.h" +#include "object.h" +#include "pathspec.h" + +static inline unsigned int ce_mode_from_stat(const struct cache_entry *ce, + unsigned int mode) +{ + extern int trust_executable_bit, has_symlinks; + if (!has_symlinks && S_ISREG(mode) && + ce && S_ISLNK(ce->ce_mode)) + return ce->ce_mode; + if (!trust_executable_bit && S_ISREG(mode)) { + if (ce && S_ISREG(ce->ce_mode)) + return ce->ce_mode; + return create_ce_mode(0666); + } + return create_ce_mode(mode); +} + +static inline int ce_to_dtype(const struct cache_entry *ce) +{ + unsigned ce_mode = ntohl(ce->ce_mode); + if (S_ISREG(ce_mode)) + return DT_REG; + else if (S_ISDIR(ce_mode) || S_ISGITLINK(ce_mode)) + return DT_DIR; + else if (S_ISLNK(ce_mode)) + return DT_LNK; + else + return DT_UNKNOWN; +} + +static inline int ce_path_match(struct index_state *istate, + const struct cache_entry *ce, + const struct pathspec *pathspec, + char *seen) +{ + return match_pathspec(istate, pathspec, ce->name, ce_namelen(ce), 0, seen, + S_ISDIR(ce->ce_mode) || S_ISGITLINK(ce->ce_mode)); +} + +#endif /* READ_CACHE_H */ |