diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-02-29 01:26:03 +0100 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-02-29 01:35:47 +0100 |
commit | 27950fa3f40f45ede9aa2b108796fd2b73b33016 (patch) | |
tree | be213ff6d1d92552add2100cf512665cb8074612 /src/blob.c | |
parent | 450b40cab39c786bf67e7491755e7d0b3a4dc3ba (diff) | |
download | libgit2-27950fa3f40f45ede9aa2b108796fd2b73b33016.tar.gz |
filter: Add write-to CRLF filter
Diffstat (limited to 'src/blob.c')
-rw-r--r-- | src/blob.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/blob.c b/src/blob.c index 57a31041e..245326157 100644 --- a/src/blob.c +++ b/src/blob.c @@ -104,29 +104,29 @@ cleanup: static int write_file_filtered( git_oid *oid, git_odb *odb, - const char *path, + const char *full_path, git_vector *filters) { int error; - git_buf file_in = GIT_BUF_INIT; - git_buf filter_result = GIT_BUF_INIT; + git_buf source = GIT_BUF_INIT; + git_buf dest = GIT_BUF_INIT; - error = git_futils_readbuffer(&file_in, path); + error = git_futils_readbuffer(&source, full_path); if (error < GIT_SUCCESS) return error; - error = git_filter__apply(&filter_result, &file_in, filters, path); + error = git_filter__apply(&dest, &source, filters); if (error < GIT_SUCCESS) { - git_buf_free(&file_in); - git_buf_free(&filter_result); + git_buf_free(&source); + git_buf_free(&dest); return error; } - error = git_odb_write(oid, odb, filter_result.ptr, filter_result.size, GIT_OBJ_BLOB); + error = git_odb_write(oid, odb, dest.ptr, dest.size, GIT_OBJ_BLOB); - git_buf_free(&file_in); - git_buf_free(&filter_result); + git_buf_free(&source); + git_buf_free(&dest); return GIT_SUCCESS; } @@ -188,7 +188,7 @@ int git_blob_create_fromfile(git_oid *oid, git_repository *repo, const char *pat git_vector write_filters = GIT_VECTOR_INIT; if ((error = git_filter__load_for_file( - &write_filters, repo, full_path.ptr, GIT_FILTER_TO_ODB)) < GIT_SUCCESS) + &write_filters, repo, path, GIT_FILTER_TO_ODB)) < GIT_SUCCESS) goto cleanup; if (write_filters.length == 0) { @@ -197,6 +197,8 @@ int git_blob_create_fromfile(git_oid *oid, git_repository *repo, const char *pat error = write_file_filtered(oid, odb, full_path.ptr, &write_filters); } + git_filter__free(&write_filters); + /* * TODO: eventually support streaming filtered files, for files which are bigger * than a given threshold. This is not a priority because applying a filter in |