summaryrefslogtreecommitdiff
path: root/include/git2/blob.h
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-08-26 23:17:07 -0700
committerRussell Belfer <rb@github.com>2013-09-17 09:30:06 -0700
commit0cf77103b218ad3622aff34f3296db1bdd5f0df9 (patch)
treef60998088c2617f3a289942d7928112f0fe683e9 /include/git2/blob.h
parent4581f9d8ab72e9b97817e1eaa7154bcec1c7f0b1 (diff)
downloadlibgit2-0cf77103b218ad3622aff34f3296db1bdd5f0df9.tar.gz
Start of filter API + git_blob_filtered_content
This begins the process of exposing git_filter objects to the public API. This includes: * new public type and API for `git_buffer` through which an allocated buffer can be passed to the user * new API `git_blob_filtered_content` * make the git_filter type and GIT_FILTER_TO_... constants public
Diffstat (limited to 'include/git2/blob.h')
-rw-r--r--include/git2/blob.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/git2/blob.h b/include/git2/blob.h
index 8fca48966..dcb815b2f 100644
--- a/include/git2/blob.h
+++ b/include/git2/blob.h
@@ -11,6 +11,7 @@
#include "types.h"
#include "oid.h"
#include "object.h"
+#include "buffer.h"
/**
* @file git2/blob.h
@@ -96,6 +97,37 @@ GIT_EXTERN(const void *) git_blob_rawcontent(const git_blob *blob);
GIT_EXTERN(git_off_t) git_blob_rawsize(const git_blob *blob);
/**
+ * Get a buffer with the filtered content of a blob.
+ *
+ * This applies filters as if the blob was being checked out to the
+ * working directory under the specified filename. This may apply
+ * CRLF filtering or other types of changes depending on the file
+ * attributes set for the blob and the content detected in it.
+ *
+ * The output is written into a `git_buffer` which the caller must free
+ * when done (via `git_buffer_free`).
+ *
+ * If no filters need to be applied, then the `out` buffer will just be
+ * populated with a pointer to the raw content of the blob. In that case,
+ * be careful to *not* free the blob until done with the buffer. To keep
+ * the data detached from the blob, call `git_buffer_resize` on the buffer
+ * with a `want_size` of 0 and the buffer will be reallocated to be
+ * detached from the blob.
+ *
+ * @param out The git_buffer to be filled in
+ * @param blob Pointer to the blob
+ * @param as_path Path used for file attribute lookups, etc.
+ * @param check_for_binary_data Should this test if blob content contains
+ * NUL bytes / looks like binary data before applying filters?
+ * @return 0 on success or an error code
+ */
+GIT_EXTERN(int) git_blob_filtered_content(
+ git_buffer *out,
+ git_blob *blob,
+ const char *as_path,
+ int check_for_binary_data);
+
+/**
* Read a file from the working folder of a repository
* and write it to the Object Database as a loose blob
*