From 3f8664036e63d2a2d58120ab6c1e8a0a09937c71 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 18 Nov 2017 03:48:59 +0100 Subject: support COLUMNS environment variable in apt tools apt usually gets the width of the window from the terminal or failing that has a default value, but especially for testing it can be handy to control the size as you can't be sure that variable sized content will always be linebreaked as expected in the testcases. --- apt-private/private-output.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'apt-private') diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc index 6bc18516d..eb9a34abe 100644 --- a/apt-private/private-output.cc +++ b/apt-private/private-output.cc @@ -67,8 +67,24 @@ bool InitOutput(std::basic_streambuf * const out) /*{{{*/ c1out.rdbuf(devnull.rdbuf()); // deal with window size changes - signal(SIGWINCH,SigWinch); - SigWinch(0); + auto cols = getenv("COLUMNS"); + if (cols != nullptr) + { + char * colends; + auto const sw = strtoul(cols, &colends, 10); + if (*colends != '\0' || sw == 0) + { + _error->Warning("Environment variable COLUMNS was ignored as it has an invalid value: \"%s\"", cols); + cols = nullptr; + } + else + ScreenWidth = sw; + } + if (cols == nullptr) + { + signal(SIGWINCH,SigWinch); + SigWinch(0); + } if(!isatty(1)) { -- cgit v1.2.3