ENH: Add method to retrieve the terminal width
This commit is contained in:
parent
d349d6ff18
commit
6a4071b5d2
|
@ -35,6 +35,8 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__))
|
#if defined(_WIN32) && (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__))
|
||||||
|
@ -1846,6 +1848,38 @@ bool SystemTools::GetLineFromStream(kwsys_ios::istream& is, kwsys_stl::string& l
|
||||||
return haveData;
|
return haveData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SystemTools::GetTerminalWidth()
|
||||||
|
{
|
||||||
|
int width = -1;
|
||||||
|
#ifndef _WIN32
|
||||||
|
struct winsize ws;
|
||||||
|
char *columns; /* Unix98 environment variable */
|
||||||
|
if(ioctl(1, TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0)
|
||||||
|
{
|
||||||
|
width = ws.ws_col;
|
||||||
|
}
|
||||||
|
if(!isatty(STDOUT_FILENO))
|
||||||
|
{
|
||||||
|
width = -1;
|
||||||
|
}
|
||||||
|
columns = getenv("COLUMNS");
|
||||||
|
if(columns && *columns)
|
||||||
|
{
|
||||||
|
long t;
|
||||||
|
char *endptr;
|
||||||
|
t = strtol(columns, &endptr, 0);
|
||||||
|
if(endptr && !*endptr && (t>0) && (t<1000))
|
||||||
|
{
|
||||||
|
width = (int)t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( width < 9 )
|
||||||
|
{
|
||||||
|
width = -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return width;
|
||||||
|
}
|
||||||
} // namespace KWSYS_NAMESPACE
|
} // namespace KWSYS_NAMESPACE
|
||||||
|
|
||||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||||
|
|
|
@ -277,6 +277,13 @@ public:
|
||||||
static bool GetLineFromStream(kwsys_ios::istream& istr, kwsys_stl::string& line,
|
static bool GetLineFromStream(kwsys_ios::istream& istr, kwsys_stl::string& line,
|
||||||
bool* has_newline=0);
|
bool* has_newline=0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the width of the terminal window. The code may or may not work, so
|
||||||
|
* make sure you have some resonable defaults prepared if the code returns
|
||||||
|
* some bogus size.
|
||||||
|
*/
|
||||||
|
static int GetTerminalWidth();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// these two functions can be called from ConvertToOutputPath
|
// these two functions can be called from ConvertToOutputPath
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue