Daniel Ferreira <[email protected]> writes:
> + if (!q->nr)
> + return;
> +
> + for (i = 0; i < q->nr; i++) {
> + struct diff_filepair *p;
> + p = q->queue[i];
> + diff_flush_stat(p, options, &stat);
> + }
Commenting just on the part that interacts with the diff machinery,
without/before carefully reading the remainder of the patches.
I suspect that refactoring this part out of diff_flush() into a
helper function "compute_diffstat()", like this:
diff --git a/diff.c b/diff.c
index 74283d9001..a42ff42e92 100644
--- a/diff.c
+++ b/diff.c
@@ -4770,12 +4770,7 @@ void diff_flush(struct diff_options *options)
dirstat_by_line) {
struct diffstat_t diffstat;
- memset(&diffstat, 0, sizeof(struct diffstat_t));
- for (i = 0; i < q->nr; i++) {
- struct diff_filepair *p = q->queue[i];
- if (check_pair_status(p))
- diff_flush_stat(p, options, &diffstat);
- }
+ compute_diffstat(&options, &diffstat);
if (output_format & DIFF_FORMAT_NUMSTAT)
show_numstat(&diffstat, options);
if (output_format & DIFF_FORMAT_DIFFSTAT)
and then exporting that function and "struct diffstat_t" to your
helper, may make it a better API, rather than having the callers to
call diff_flush_stat() for each and every path.