aboutsummaryrefslogtreecommitdiff
path: root/cache.h
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-12-15 22:02:36 +0700
committerJunio C Hamano <gitster@pobox.com>2011-02-03 12:19:19 -0800
commit0602f3e916a2727dfc4954b81ce5aacd69d9692c (patch)
tree3e870a383e9d32928496cc9be9a21331a95f416f /cache.h
parent7ed863a85a6ce2c4ac4476848310b8f917ab41f9 (diff)
downloadgit-0602f3e916a2727dfc4954b81ce5aacd69d9692c.tar.gz
git-0602f3e916a2727dfc4954b81ce5aacd69d9692c.tar.xz
Add struct pathspec
The old pathspec structure remains as pathspec.raw[]. New things are stored in pathspec.items[]. There's no guarantee that the pathspec order in raw[] is exactly as in items[]. raw[] is external (source) data and is untouched by pathspec manipulation functions. It eases migration from old const char ** to this new struct. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index d83d68c85..a6456143b 100644
--- a/cache.h
+++ b/cache.h
@@ -500,6 +500,17 @@ extern int index_name_is_other(const struct index_state *, const char *, int);
extern int ie_match_stat(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
extern int ie_modified(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
+struct pathspec {
+ const char **raw; /* get_pathspec() result, not freed by free_pathspec() */
+ int nr;
+ struct pathspec_item {
+ const char *match;
+ int len;
+ } *items;
+};
+
+extern int init_pathspec(struct pathspec *, const char **);
+extern void free_pathspec(struct pathspec *);
extern int ce_path_match(const struct cache_entry *ce, const char **pathspec);
extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, enum object_type type, const char *path);
extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object);