diff options
author | Vicent Martà <vicent@github.com> | 2013-09-17 09:57:55 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2013-09-17 09:57:55 -0700 |
commit | bb371b62e950e3307d3acf2f772495a60565d266 (patch) | |
tree | b4479ec3ad261bcac13493ee3f5ad45d15dfdda2 /src/odb.c | |
parent | 4581f9d8ab72e9b97817e1eaa7154bcec1c7f0b1 (diff) | |
parent | f60ed4e6495b8bf68d0604335672e6f300330b3b (diff) | |
download | libgit2-bb371b62e950e3307d3acf2f772495a60565d266.tar.gz |
Merge pull request #1847 from libgit2/filters-alternative
Alternative proposal for filter API
Diffstat (limited to 'src/odb.c')
-rw-r--r-- | src/odb.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -179,28 +179,30 @@ done: } int git_odb__hashfd_filtered( - git_oid *out, git_file fd, size_t size, git_otype type, git_vector *filters) + git_oid *out, git_file fd, size_t size, git_otype type, git_filter_list *fl) { int error; git_buf raw = GIT_BUF_INIT; - git_buf filtered = GIT_BUF_INIT; - if (!filters || !filters->length) + if (!fl) return git_odb__hashfd(out, fd, size, type); /* size of data is used in header, so we have to read the whole file * into memory to apply filters before beginning to calculate the hash */ - if (!(error = git_futils_readbuffer_fd(&raw, fd, size))) - error = git_filters_apply(&filtered, &raw, filters); + if (!(error = git_futils_readbuffer_fd(&raw, fd, size))) { + git_buf post = GIT_BUF_INIT; - git_buf_free(&raw); + error = git_filter_list_apply_to_data(&post, fl, &raw); - if (!error) - error = git_odb_hash(out, filtered.ptr, filtered.size, type); + git_buf_free(&raw); - git_buf_free(&filtered); + if (!error) + error = git_odb_hash(out, post.ptr, post.size, type); + + git_buf_free(&post); + } return error; } |