# [RFC PATCH] diff: use $COLUMNS if available for default stat_width

2 messages from 2011-08-26 to 2011-08-26. Participants: Kris Shannon, Mikael Magnusson.
Thread: https://gitlist.dev/t/28224

## Kris Shannon, 2011-08-26 05:47

Subject: [RFC PATCH] diff: use $COLUMNS if available for default stat_width
Message-ID: <1314337647-29270-1-git-send-email-kris@shannon.id.au>
URL: https://gitlist.dev/e/1314337647-29270-1-git-send-email-kris%40shannon.id.au

```
If the COLUMNS environment variable is set use it's value
as the default stat_width.

Also set the stat_name_width default to 2/3 of the full width.

This does change the default from 50 to 53 when using the
original 80 column stat_width fallback.

Signed-off-by: Kris Shannon <kris@shannon.id.au>
---
 diff.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

This has bugged me for a long time.  I finally decided to see how hard it would
be to fix.

I thought about getting the COLUMNS value once but I'm not sure it's worth the
extra code.

diff --git a/diff.c b/diff.c
index 9038f19..6954134 100644
--- a/diff.c
+++ b/diff.c
@@ -1329,8 +1329,16 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
 		line_prefix = msg->buf;
 	}
 
-	width = options->stat_width ? options->stat_width : 80;
-	name_width = options->stat_name_width ? options->stat_name_width : 50;
+	width = options->stat_width;
+	if (!width) {
+		char *cols = getenv("COLUMNS");
+
+		if (cols)
+			width = strtoul(cols, NULL, 10);
+		if (!width)
+			width = 80;
+	}
+	name_width = options->stat_name_width ? options->stat_name_width : ((width * 2 + 1) / 3);
 
 	/* Sanity: give at least 5 columns to the graph,
 	 * but leave at least 10 columns for the name.
-- 
1.7.6.1

```

## Mikael Magnusson, 2011-08-26 11:20

Subject: Re: [RFC PATCH] diff: use $COLUMNS if available for default stat_width
Message-ID: <CAHYJk3Rw0i5uNW1vyd--OS4G6Pp2kNOA3aKUucWNrDgfQkYRkA@mail.gmail.com>
URL: https://gitlist.dev/e/CAHYJk3Rw0i5uNW1vyd--OS4G6Pp2kNOA3aKUucWNrDgfQkYRkA%40mail.gmail.com
In-Reply-To: <1314337647-29270-1-git-send-email-kris@shannon.id.au>

```
On 26 August 2011 07:47, Kris Shannon <kris@shannon.id.au> wrote:
> If the COLUMNS environment variable is set use it's value
> as the default stat_width.
>
> Also set the stat_name_width default to 2/3 of the full width.
>
> This does change the default from 50 to 53 when using the
> original 80 column stat_width fallback.

You probably only want to do this when stdout is a terminal.

-- 
Mikael Magnusson

```
