Download raw body.
diff: Add api for consumers to check if diff is printable
On Thu, Sep 29, 2022 at 10:17:52AM +0100, Tom Jones wrote:
> Programs using the libdiff api they can need to know if the diff
> contained anything that would be printed, or would be empty.
>
> Expose the same check that the outputs do as a function call.
>
> - Tom
I would prefer a name such as diff_result_contains_printable_chunks()
to make it more obvious that this interface implements a boolean check.
> diff --git a/include/diff_main.h b/include/diff_main.h
> index 5e816ae..7b6d039 100644
> --- a/include/diff_main.h
> +++ b/include/diff_main.h
> @@ -251,3 +251,4 @@ struct diff_result *diff_main(const struct diff_config *config,
> struct diff_data *left,
> struct diff_data *right);
> void diff_result_free(struct diff_result *result);
> +int diff_printable_chunks(struct diff_result *result);
> diff --git a/lib/diff_main.c b/lib/diff_main.c
> index c531ad2..3043a9d 100644
> --- a/lib/diff_main.c
> +++ b/lib/diff_main.c
> @@ -628,3 +628,19 @@ diff_result_free(struct diff_result *result)
> ARRAYLIST_FREE(result->chunks);
> free(result);
> }
> +
> +int
> +diff_printable_chunks(struct diff_result *result)
> +{
> + struct diff_chunk *c;
> + enum diff_chunk_type t;
> +
> + for (int i = 0; i < result->chunks.len; i++) {
> + c = &result->chunks.head[i];
> + t = diff_chunk_type(c);
> + if (t == CHUNK_MINUS || t == CHUNK_PLUS)
> + return 1;
> + }
> +
> + return 0;
> +}
diff: Add api for consumers to check if diff is printable