Commit d9c1538775ff77e08427d82872ac28b42f7f81ba

Edward Thomson 2021-01-05T14:29:58

blob: add git_blob_filter_options_init The `git_blob_filter_options_init` function should be included, to allow callers in FFI environments to let us initialize an options structure for them.

diff --git a/include/git2/blob.h b/include/git2/blob.h
index 0c6372c..c2a968c 100644
--- a/include/git2/blob.h
+++ b/include/git2/blob.h
@@ -133,6 +133,18 @@ typedef struct {
 #define GIT_BLOB_FILTER_OPTIONS_INIT {GIT_BLOB_FILTER_OPTIONS_VERSION, GIT_BLOB_FILTER_CHECK_FOR_BINARY}
 
 /**
+ * Initialize git_blob_filter_options structure
+ *
+ * Initializes a `git_blob_filter_options` with default values. Equivalent
+ * to creating an instance with `GIT_BLOB_FILTER_OPTIONS_INIT`.
+ *
+ * @param opts The `git_blob_filter_options` struct to initialize.
+ * @param version The struct version; pass `GIT_BLOB_FILTER_OPTIONS_VERSION`.
+ * @return Zero on success; -1 on failure.
+ */
+GIT_EXTERN(int) git_blob_filter_options_init(git_blob_filter_options *opts, unsigned int version);
+
+/**
  * Get a buffer with the filtered content of a blob.
  *
  * This applies filters as if the blob was being checked out to the
diff --git a/src/blob.c b/src/blob.c
index 9706964..545c10e 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -408,6 +408,15 @@ int git_blob_is_binary(const git_blob *blob)
 	return git_buf_text_is_binary(&content);
 }
 
+int git_blob_filter_options_init(
+	git_blob_filter_options *opts,
+	unsigned int version)
+{
+	GIT_INIT_STRUCTURE_FROM_TEMPLATE(opts, version,
+		git_blob_filter_options, GIT_BLOB_FILTER_OPTIONS_INIT);
+	return 0;
+}
+
 int git_blob_filter(
 	git_buf *out,
 	git_blob *blob,
diff --git a/tests/core/structinit.c b/tests/core/structinit.c
index 192096b..b6377bd 100644
--- a/tests/core/structinit.c
+++ b/tests/core/structinit.c
@@ -82,6 +82,11 @@ void test_core_structinit__compare(void)
 		git_blame_options, GIT_BLAME_OPTIONS_VERSION, \
 		GIT_BLAME_OPTIONS_INIT, git_blame_options_init);
 
+	/* blob_filter_options */
+	CHECK_MACRO_FUNC_INIT_EQUAL( \
+		git_blob_filter_options, GIT_BLOB_FILTER_OPTIONS_VERSION, \
+		GIT_BLOB_FILTER_OPTIONS_INIT, git_blob_filter_options_init);
+
 	/* checkout */
 	CHECK_MACRO_FUNC_INIT_EQUAL( \
 		git_checkout_options, GIT_CHECKOUT_OPTIONS_VERSION, \