diff options
author | Russell Belfer <rb@github.com> | 2013-06-19 15:20:59 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-06-19 15:20:59 -0700 |
commit | e91f9a8f28ca58c5ff0450749a57d233a5512f2d (patch) | |
tree | ccd206c281d87bf748350dc11590139ffde981ef /src/pathspec.c | |
parent | 84ba4944bca985195e6c32457488e514b5b37f98 (diff) | |
download | libgit2-e91f9a8f28ca58c5ff0450749a57d233a5512f2d.tar.gz |
Add higher level pathspec API
Right now, setting up a pathspec to be parsed and processed
requires several data structures and a couple of API calls. This
adds a new high level data structure that contains all the items
that you'll need and high-level APIs that do all of the setup and
all of the teardown. This will make it easier to use pathspecs
in various places with less repeated code.
Diffstat (limited to 'src/pathspec.c')
-rw-r--r-- | src/pathspec.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/pathspec.c b/src/pathspec.c index 35c79ce82..f029836d0 100644 --- a/src/pathspec.c +++ b/src/pathspec.c @@ -166,3 +166,28 @@ bool git_pathspec_match_path( return false; } + +int git_pathspec_context_init( + git_pathspec_context *ctxt, const git_strarray *paths) +{ + int error = 0; + + memset(ctxt, 0, sizeof(*ctxt)); + + ctxt->prefix = git_pathspec_prefix(paths); + + if ((error = git_pool_init(&ctxt->pool, 1, 0)) < 0 || + (error = git_pathspec_init(&ctxt->pathspec, paths, &ctxt->pool)) < 0) + git_pathspec_context_free(ctxt); + + return error; +} + +void git_pathspec_context_free( + git_pathspec_context *ctxt) +{ + git__free(ctxt->prefix); + git_pathspec_free(&ctxt->pathspec); + git_pool_clear(&ctxt->pool); + memset(ctxt, 0, sizeof(*ctxt)); +} |