[PATCH 1/6] Add struct pathspec
flat view
STALE3767d
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:49:38
Subsystem:
the rest · Maintainer:
Linus Torvalds
This struct for now is just a wrapper for the current pathspec form: const char **. It is intended to be extended with more useful pathspec-related information over time. The data structure for passing pathspec around remains const char **, struct pathspec will be initialized locally to be used and destroyed. Hopefully all pathspec related code will be gradually migrated to pass this struct instead. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- cache.h | 7 +++++++ dir.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/cache.h b/cache.h
index eb77e1d..a3029fd 100644
--- a/cache.h
+++ b/cache.h@@ -492,6 +492,13 @@ 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; +}; + +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);
diff --git a/dir.c b/dir.c
index 133f472..205adc4 100644
--- a/dir.c
+++ b/dir.c@@ -1071,3 +1071,21 @@ int remove_path(const char *name) return 0; } +int init_pathspec(struct pathspec *pathspec, const char **paths) +{ + const char **p = paths; + + memset(pathspec, 0, sizeof(*pathspec)); + if (!p) + return 0; + while (*p) + p++; + pathspec->raw = paths; + pathspec->nr = p - paths; + return 0; +} + +void free_pathspec(struct pathspec *pathspec) +{ + ; /* do nothing */ +}
--
1.7.1.rc1.70.g788ca