summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-06-10 14:43:49 -0400
committerEdward Thomson <ethomson@microsoft.com>2015-06-10 14:43:49 -0400
commit2eecc2886be68496bb9555e4c93e59e985a7d09f (patch)
tree058d6717ff7c08e9255135c651b7e5191a91b194 /src
parentda6720fcc5d9f368e7aa562384439498c1bf307e (diff)
downloadlibgit2-2eecc2886be68496bb9555e4c93e59e985a7d09f.tar.gz
Introduce `git_filter_list_contains`
`git_filter_list_contains` can be used to query a filter list to determine if a given filter will be run.
Diffstat (limited to 'src')
-rw-r--r--src/filter.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/filter.c b/src/filter.c
index 3c6a0a9d8..e25d37c35 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -27,6 +27,7 @@ struct git_filter_source {
};
typedef struct {
+ const char *filter_name;
git_filter *filter;
void *payload;
} git_filter_entry;
@@ -526,7 +527,9 @@ int git_filter_list__load_ext(
fe = git_array_alloc(fl->filters);
GITERR_CHECK_ALLOC(fe);
- fe->filter = fdef->filter;
+
+ fe->filter = fdef->filter;
+ fe->filter_name = fdef->filter_name;
fe->payload = payload;
}
}
@@ -574,6 +577,25 @@ void git_filter_list_free(git_filter_list *fl)
git__free(fl);
}
+int git_filter_list_contains(
+ git_filter_list *fl,
+ const char *name)
+{
+ size_t i;
+
+ assert(name);
+
+ if (!fl)
+ return 0;
+
+ for (i = 0; i < fl->filters.size; i++) {
+ if (strcmp(fl->filters.ptr[i].filter_name, name) == 0)
+ return 1;
+ }
+
+ return 0;
+}
+
int git_filter_list_push(
git_filter_list *fl, git_filter *filter, void *payload)
{