Re: [PATCH 3/3] diff --stat: sometimes use non-linear scaling.
On Tue, 26 Sep 2006, Junio C Hamano wrote:
Show 20 quoted lines
> @@ -574,10 +585,11 @@ static void show_graph(char ch, int cnt,
> static void show_stats(struct diffstat_t* data, struct diff_options *options)
> {
> int i, len, add, del, total, adds = 0, dels = 0;
> - int max_change = 0, max_len = 0;
> + int max_change = 0, max_len = 0, min_change = 0;
> int total_files = data->nr;
> int width, name_width;
> const char *reset, *set, *add_c, *del_c;
> + int non_linear_scale = 0;
>
> if (data->nr == 0)
> return;
> @@ -620,6 +632,8 @@ static void show_stats(struct diffstat_t
> continue;
> if (max_change < change)
> max_change = change;
> + if (0 < change && (!min_change || change < min_change))
> + min_change = change;
> }Again with the constant placement in a comparison expression.
Show 13 quoted lines
> @@ -684,6 +704,11 @@ static void show_stats(struct diffstat_t
>
> if (max_change < width)
> ;
> + else if (non_linear_scale) {
> + total = scale_non_linear(total, width, max_change);
> + add = scale_linear(add, total, add + del);
> + del = total - add;
> + }
> else {
> total = scale_linear(total, width, max_change);
> add = scale_linear(add, width, max_change);
> if (...)
;
else if {
...
}is _never_ necessary.
David