You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
/*
|
|
* Copyright(C) 1999-2021 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
* See packages/seacas/LICENSE for details
|
|
*/
|
|
#define _POSIX_SOURCE
|
|
#include <stdio.h>
|
|
|
|
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \
|
|
defined(__MINGW32__) || defined(_WIN64) || defined(__MINGW64__)
|
|
#include <io.h>
|
|
#define NOMINMAX
|
|
#include <windows.h>
|
|
#define isatty _isatty
|
|
#else
|
|
#include <sys/ioctl.h>
|
|
#endif
|
|
|
|
#include <unistd.h>
|
|
|
|
int term_width(void)
|
|
{
|
|
int cols = 80;
|
|
if (isatty(fileno(stderr))) {
|
|
#ifdef TIOCGSIZE
|
|
struct ttysize ts;
|
|
ioctl(STDIN_FILENO, TIOCGSIZE, &ts);
|
|
cols = ts.ts_cols;
|
|
#elif defined(_MSC_VER)
|
|
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
|
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
|
|
cols = csbi.srWindow.Right - csbi.srWindow.Left + 1;
|
|
#elif defined(TIOCGWINSZ)
|
|
struct winsize ts;
|
|
ioctl(STDIN_FILENO, TIOCGWINSZ, &ts);
|
|
cols = ts.ws_col;
|
|
#endif /* TIOCGSIZE */
|
|
}
|
|
return cols;
|
|
}
|
|
|