On Tue, 26 Sep 2006, Junio C Hamano wrote: > +static void show_graph(char ch, int cnt) > +{ > + if (!cnt) > + return; > + while (cnt--) > + putchar(ch); > +} > + 'if (cnt <= 0)' or 'while (cnt-- > 0)' is a better API./ > +static void show_stats(struct diffstat_t* data, struct diff_options *options) > { > int i, len, add, del, total, adds = 0, dels = 0; > - int max, max_change = 0, max_len = 0; > + int max_change = 0, max_len = 0; > int total_files = data->nr; > + int width, name_width; > > if (data->nr == 0) > return; > > + width = options->stat_width ? options->stat_width : 80; > + name_width = options->stat_name_width ? options->stat_name_width : 50; > + > + /* Sanity: give at least 5 columns to the graph, > + * but leave at least 10 columns for the name. > + */ > + if (width < name_width + 15) { > + if (25 < name_width) > + name_width = width - 15; > + else > + width = name_width + 15; > + } > + Constants go on the right side of comparison expressions. > + /* Find the longest filename and max number of changes */ > for (i = 0; i < data->nr; i++) { > struct diffstat_file *file = data->files[i]; > + int change = file->added + file->deleted; > + > + if (0 < (len = quote_c_style(file->name, NULL, NULL, 0))) { > + char *qname = xmalloc(len + 1); > + quote_c_style(file->name, qname, NULL, 0); > + free(file->name); > + file->name = qname; > + } Same. > @@ -623,27 +664,34 @@ static void show_stats(struct diffstat_t > goto free_diffstat_file; > } > > + /* > + * scale the add/delete > + */ > add = added; > del = deleted; > total = add + del; > adds += add; > dels += del; > > - if (max_change > 0) { > - total = (total * max + max_change / 2) / max_change; > - add = (add * max + max_change / 2) / max_change; > + if (max_change < width) > + ; > + else { > + total = scale_linear(total, width, max_change); > + add = scale_linear(add, width, max_change); > del = total - add; > } if (max_change >= width) > diff --git a/diff.h b/diff.h > index b60a02e..e06d0f4 100644 > --- a/diff.h > +++ b/diff.h > @@ -69,6 +69,9 @@ struct diff_options { > const char *stat_sep; > long xdl_opts; > > + int stat_width; > + int stat_name_width; > + Can you use unsigned char here instead? David - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html