Merge branch 'upstream-KWSys' into stdio-terminal

# By KWSys Upstream
* upstream-KWSys:
  KWSys 2025-05-20 (7e1ee2d9)
This commit is contained in:
Brad King
2025-05-20 08:23:20 -04:00
4 changed files with 2 additions and 635 deletions

View File

@@ -148,7 +148,6 @@ if(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
set(KWSYS_USE_System 1)
set(KWSYS_USE_SystemTools 1)
set(KWSYS_USE_CommandLineArguments 1)
set(KWSYS_USE_Terminal 1)
set(KWSYS_USE_FStream 1)
set(KWSYS_USE_String 1)
set(KWSYS_USE_SystemInformation 1)
@@ -631,7 +630,7 @@ endforeach()
# Add selected C components.
foreach(c IN ITEMS
Process Base64 Encoding MD5 Terminal System String
Process Base64 Encoding MD5 System String
)
if(KWSYS_USE_${c})
# Use the corresponding header file.
@@ -662,7 +661,7 @@ if(KWSYS_USE_Process)
endif()
# Add selected C sources.
foreach(c IN ITEMS Base64 Encoding MD5 Terminal System String)
foreach(c IN ITEMS Base64 Encoding MD5 System String)
if(KWSYS_USE_${c})
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${c}C.c)
list(APPEND KWSYS_C_SRCS ${c}C.c)
@@ -927,7 +926,6 @@ if(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
# C tests
set(KWSYS_C_TESTS
testEncode.c
testTerminal.c
)
if(KWSYS_STANDALONE)
set(KWSYS_C_TESTS ${KWSYS_C_TESTS} testFail.c)

View File

@@ -1,439 +0,0 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__OpenBSD__)
/* NOLINTNEXTLINE(bugprone-reserved-identifier) */
# define _XOPEN_SOURCE 600
#endif
#include "kwsysPrivate.h"
#include KWSYS_HEADER(Terminal.h)
/* Work-around CMake dependency scanning limitation. This must
duplicate the above list of headers. */
#if 0
# include "Terminal.h.in"
#endif
/* Configure support for this platform. */
#if defined(_WIN32)
# define KWSYS_TERMINAL_SUPPORT_CONSOLE
#endif
#if !defined(_WIN32)
# define KWSYS_TERMINAL_ISATTY_WORKS
#endif
/* Include needed system APIs. */
#include <stdarg.h> /* va_list */
#include <stdlib.h> /* getenv */
#include <string.h> /* strcmp */
#if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
# include <io.h> /* _get_osfhandle */
# include <windows.h> /* SetConsoleTextAttribute */
#endif
#if defined(KWSYS_TERMINAL_ISATTY_WORKS)
# include <unistd.h> /* isatty */
#else
# include <sys/stat.h> /* fstat */
#endif
static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
int default_tty);
static void kwsysTerminalSetVT100Color(FILE* stream, int color);
#if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
static HANDLE kwsysTerminalGetStreamHandle(FILE* stream);
static void kwsysTerminalSetConsoleColor(HANDLE hOut,
CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
FILE* stream, int color);
#endif
void kwsysTerminal_cfprintf(int color, FILE* stream, char const* format, ...)
{
/* Setup the stream with the given color if possible. */
int pipeIsConsole = 0;
int pipeIsVT100 = 0;
int default_vt100 = color & kwsysTerminal_Color_AssumeVT100;
int default_tty = color & kwsysTerminal_Color_AssumeTTY;
#if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
CONSOLE_SCREEN_BUFFER_INFO hOutInfo;
HANDLE hOut = kwsysTerminalGetStreamHandle(stream);
if (GetConsoleScreenBufferInfo(hOut, &hOutInfo)) {
pipeIsConsole = 1;
kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream, color);
}
#endif
if (!pipeIsConsole &&
kwsysTerminalStreamIsVT100(stream, default_vt100, default_tty)) {
pipeIsVT100 = 1;
kwsysTerminalSetVT100Color(stream, color);
}
/* Format the text into the stream. */
{
va_list var_args;
va_start(var_args, format);
vfprintf(stream, format, var_args);
va_end(var_args);
}
/* Restore the normal color state for the stream. */
#if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
if (pipeIsConsole) {
kwsysTerminalSetConsoleColor(hOut, &hOutInfo, stream,
kwsysTerminal_Color_Normal);
}
#endif
if (pipeIsVT100) {
kwsysTerminalSetVT100Color(stream, kwsysTerminal_Color_Normal);
}
}
/* Detect cases when a stream is definitely not interactive. */
#if !defined(KWSYS_TERMINAL_ISATTY_WORKS)
static int kwsysTerminalStreamIsNotInteractive(FILE* stream)
{
/* The given stream is definitely not interactive if it is a regular
file. */
struct stat stream_stat;
if (fstat(fileno(stream), &stream_stat) == 0) {
if (stream_stat.st_mode & S_IFREG) {
return 1;
}
}
return 0;
}
#endif
/* List of terminal names known to support VT100 color escape sequences. */
static char const* kwsysTerminalVT100Names[] = { "Eterm",
"alacritty",
"alacritty-direct",
"ansi",
"color-xterm",
"con132x25",
"con132x30",
"con132x43",
"con132x60",
"con80x25",
"con80x28",
"con80x30",
"con80x43",
"con80x50",
"con80x60",
"cons25",
"console",
"cygwin",
"dtterm",
"eterm-color",
"gnome",
"gnome-256color",
"konsole",
"konsole-256color",
"kterm",
"linux",
"msys",
"linux-c",
"mach-color",
"mlterm",
"putty",
"putty-256color",
"rxvt",
"rxvt-256color",
"rxvt-cygwin",
"rxvt-cygwin-native",
"rxvt-unicode",
"rxvt-unicode-256color",
"screen",
"screen-256color",
"screen-256color-bce",
"screen-bce",
"screen-w",
"screen.linux",
"st-256color",
"tmux",
"tmux-256color",
"vt100",
"xterm",
"xterm-16color",
"xterm-256color",
"xterm-88color",
"xterm-color",
"xterm-debian",
"xterm-kitty",
"xterm-termite",
0 };
/* Detect whether a stream is displayed in a VT100-compatible terminal. */
static int kwsysTerminalStreamIsVT100(FILE* stream, int default_vt100,
int default_tty)
{
/* Force color according to https://bixense.com/clicolors/ convention. */
{
char const* clicolor_force = getenv("CLICOLOR_FORCE");
if (clicolor_force && *clicolor_force &&
strcmp(clicolor_force, "0") != 0) {
return 1;
}
}
/* Disable color according to https://bixense.com/clicolors/ convention. */
{
char const* clicolor = getenv("CLICOLOR");
if (clicolor && strcmp(clicolor, "0") == 0) {
return 0;
}
}
/* GNU make 4.1+ may tell us that its output is destined for a TTY. */
{
char const* termout = getenv("MAKE_TERMOUT");
if (termout && *termout != '\0') {
return 1;
}
}
/* If running inside emacs the terminal is not VT100. Some emacs
seem to claim the TERM is xterm even though they do not support
VT100 escapes. */
{
char const* emacs = getenv("EMACS");
if (emacs && *emacs == 't') {
return 0;
}
}
/* Check for a valid terminal. */
if (!default_vt100) {
char const** t = 0;
char const* term = getenv("TERM");
if (term) {
for (t = kwsysTerminalVT100Names; *t && strcmp(term, *t) != 0; ++t) {
}
}
if (!(t && *t)) {
return 0;
}
}
#if defined(KWSYS_TERMINAL_ISATTY_WORKS)
/* Make sure the stream is a tty. */
(void)default_tty;
return isatty(fileno(stream)) ? 1 : 0;
#else
/* Check for cases in which the stream is definitely not a tty. */
if (kwsysTerminalStreamIsNotInteractive(stream)) {
return 0;
}
/* Use the provided default for whether this is a tty. */
return default_tty;
#endif
}
/* VT100 escape sequence strings. */
#if defined(__MVS__)
/* if building on z/OS (aka MVS), assume we are using EBCDIC */
# define ESCAPE_CHAR "\47"
#else
# define ESCAPE_CHAR "\33"
#endif
#define KWSYS_TERMINAL_VT100_NORMAL ESCAPE_CHAR "[0m"
#define KWSYS_TERMINAL_VT100_BOLD ESCAPE_CHAR "[1m"
#define KWSYS_TERMINAL_VT100_UNDERLINE ESCAPE_CHAR "[4m"
#define KWSYS_TERMINAL_VT100_BLINK ESCAPE_CHAR "[5m"
#define KWSYS_TERMINAL_VT100_INVERSE ESCAPE_CHAR "[7m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_BLACK ESCAPE_CHAR "[30m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_RED ESCAPE_CHAR "[31m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_GREEN ESCAPE_CHAR "[32m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_YELLOW ESCAPE_CHAR "[33m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_BLUE ESCAPE_CHAR "[34m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_MAGENTA ESCAPE_CHAR "[35m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_CYAN ESCAPE_CHAR "[36m"
#define KWSYS_TERMINAL_VT100_FOREGROUND_WHITE ESCAPE_CHAR "[37m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_BLACK ESCAPE_CHAR "[40m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_RED ESCAPE_CHAR "[41m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_GREEN ESCAPE_CHAR "[42m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_YELLOW ESCAPE_CHAR "[43m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_BLUE ESCAPE_CHAR "[44m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_MAGENTA ESCAPE_CHAR "[45m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_CYAN ESCAPE_CHAR "[46m"
#define KWSYS_TERMINAL_VT100_BACKGROUND_WHITE ESCAPE_CHAR "[47m"
/* Write VT100 escape sequences to the stream for the given color. */
static void kwsysTerminalSetVT100Color(FILE* stream, int color)
{
if (color == kwsysTerminal_Color_Normal) {
fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
return;
}
switch (color & kwsysTerminal_Color_ForegroundMask) {
case kwsysTerminal_Color_Normal:
fprintf(stream, KWSYS_TERMINAL_VT100_NORMAL);
break;
case kwsysTerminal_Color_ForegroundBlack:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_BLACK);
break;
case kwsysTerminal_Color_ForegroundRed:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_RED);
break;
case kwsysTerminal_Color_ForegroundGreen:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_GREEN);
break;
case kwsysTerminal_Color_ForegroundYellow:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_YELLOW);
break;
case kwsysTerminal_Color_ForegroundBlue:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_BLUE);
break;
case kwsysTerminal_Color_ForegroundMagenta:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_MAGENTA);
break;
case kwsysTerminal_Color_ForegroundCyan:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_CYAN);
break;
case kwsysTerminal_Color_ForegroundWhite:
fprintf(stream, KWSYS_TERMINAL_VT100_FOREGROUND_WHITE);
break;
default:
break;
}
switch (color & kwsysTerminal_Color_BackgroundMask) {
case kwsysTerminal_Color_BackgroundBlack:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_BLACK);
break;
case kwsysTerminal_Color_BackgroundRed:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_RED);
break;
case kwsysTerminal_Color_BackgroundGreen:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_GREEN);
break;
case kwsysTerminal_Color_BackgroundYellow:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_YELLOW);
break;
case kwsysTerminal_Color_BackgroundBlue:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_BLUE);
break;
case kwsysTerminal_Color_BackgroundMagenta:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_MAGENTA);
break;
case kwsysTerminal_Color_BackgroundCyan:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_CYAN);
break;
case kwsysTerminal_Color_BackgroundWhite:
fprintf(stream, KWSYS_TERMINAL_VT100_BACKGROUND_WHITE);
break;
default:
break;
}
if (color & kwsysTerminal_Color_ForegroundBold) {
fprintf(stream, KWSYS_TERMINAL_VT100_BOLD);
}
}
#if defined(KWSYS_TERMINAL_SUPPORT_CONSOLE)
# define KWSYS_TERMINAL_MASK_FOREGROUND \
(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | \
FOREGROUND_INTENSITY)
# define KWSYS_TERMINAL_MASK_BACKGROUND \
(BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | \
BACKGROUND_INTENSITY)
/* Get the Windows handle for a FILE stream. */
static HANDLE kwsysTerminalGetStreamHandle(FILE* stream)
{
/* Get the C-library file descriptor from the stream. */
int fd = fileno(stream);
# if defined(__CYGWIN__)
/* Cygwin seems to have an extra pipe level. If the file descriptor
corresponds to stdout or stderr then obtain the matching windows
handle directly. */
if (fd == fileno(stdout)) {
return GetStdHandle(STD_OUTPUT_HANDLE);
} else if (fd == fileno(stderr)) {
return GetStdHandle(STD_ERROR_HANDLE);
}
# endif
/* Get the underlying Windows handle for the descriptor. */
return (HANDLE)_get_osfhandle(fd);
}
/* Set color attributes in a Windows console. */
static void kwsysTerminalSetConsoleColor(HANDLE hOut,
CONSOLE_SCREEN_BUFFER_INFO* hOutInfo,
FILE* stream, int color)
{
WORD attributes = 0;
switch (color & kwsysTerminal_Color_ForegroundMask) {
case kwsysTerminal_Color_Normal:
attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_FOREGROUND;
break;
case kwsysTerminal_Color_ForegroundBlack:
attributes |= 0;
break;
case kwsysTerminal_Color_ForegroundRed:
attributes |= FOREGROUND_RED;
break;
case kwsysTerminal_Color_ForegroundGreen:
attributes |= FOREGROUND_GREEN;
break;
case kwsysTerminal_Color_ForegroundYellow:
attributes |= FOREGROUND_RED | FOREGROUND_GREEN;
break;
case kwsysTerminal_Color_ForegroundBlue:
attributes |= FOREGROUND_BLUE;
break;
case kwsysTerminal_Color_ForegroundMagenta:
attributes |= FOREGROUND_RED | FOREGROUND_BLUE;
break;
case kwsysTerminal_Color_ForegroundCyan:
attributes |= FOREGROUND_BLUE | FOREGROUND_GREEN;
break;
case kwsysTerminal_Color_ForegroundWhite:
attributes |= FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
break;
}
switch (color & kwsysTerminal_Color_BackgroundMask) {
case kwsysTerminal_Color_Normal:
attributes |= hOutInfo->wAttributes & KWSYS_TERMINAL_MASK_BACKGROUND;
break;
case kwsysTerminal_Color_BackgroundBlack:
attributes |= 0;
break;
case kwsysTerminal_Color_BackgroundRed:
attributes |= BACKGROUND_RED;
break;
case kwsysTerminal_Color_BackgroundGreen:
attributes |= BACKGROUND_GREEN;
break;
case kwsysTerminal_Color_BackgroundYellow:
attributes |= BACKGROUND_RED | BACKGROUND_GREEN;
break;
case kwsysTerminal_Color_BackgroundBlue:
attributes |= BACKGROUND_BLUE;
break;
case kwsysTerminal_Color_BackgroundMagenta:
attributes |= BACKGROUND_RED | BACKGROUND_BLUE;
break;
case kwsysTerminal_Color_BackgroundCyan:
attributes |= BACKGROUND_BLUE | BACKGROUND_GREEN;
break;
case kwsysTerminal_Color_BackgroundWhite:
attributes |= BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
break;
}
if (color & kwsysTerminal_Color_ForegroundBold) {
attributes |= FOREGROUND_INTENSITY;
}
if (color & kwsysTerminal_Color_BackgroundBold) {
attributes |= BACKGROUND_INTENSITY;
}
fflush(stream);
SetConsoleTextAttribute(hOut, attributes);
}
#endif

View File

@@ -1,170 +0,0 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
#ifndef @KWSYS_NAMESPACE@_Terminal_h
#define @KWSYS_NAMESPACE@_Terminal_h
#include <@KWSYS_NAMESPACE@/Configure.h>
#include <stdio.h> /* For file stream type FILE. */
/* Redefine all public interface symbol names to be in the proper
namespace. These macros are used internally to kwsys only, and are
not visible to user code. Use kwsysHeaderDump.pl to reproduce
these macros after making changes to the interface. */
#if !defined(KWSYS_NAMESPACE)
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
#endif
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
# define kwsysTerminal_cfprintf kwsys_ns(Terminal_cfprintf)
# define kwsysTerminal_Color_e kwsys_ns(Terminal_Color_e)
# define kwsysTerminal_Color_Normal kwsys_ns(Terminal_Color_Normal)
# define kwsysTerminal_Color_ForegroundBlack \
kwsys_ns(Terminal_Color_ForegroundBlack)
# define kwsysTerminal_Color_ForegroundRed \
kwsys_ns(Terminal_Color_ForegroundRed)
# define kwsysTerminal_Color_ForegroundGreen \
kwsys_ns(Terminal_Color_ForegroundGreen)
# define kwsysTerminal_Color_ForegroundYellow \
kwsys_ns(Terminal_Color_ForegroundYellow)
# define kwsysTerminal_Color_ForegroundBlue \
kwsys_ns(Terminal_Color_ForegroundBlue)
# define kwsysTerminal_Color_ForegroundMagenta \
kwsys_ns(Terminal_Color_ForegroundMagenta)
# define kwsysTerminal_Color_ForegroundCyan \
kwsys_ns(Terminal_Color_ForegroundCyan)
# define kwsysTerminal_Color_ForegroundWhite \
kwsys_ns(Terminal_Color_ForegroundWhite)
# define kwsysTerminal_Color_ForegroundMask \
kwsys_ns(Terminal_Color_ForegroundMask)
# define kwsysTerminal_Color_BackgroundBlack \
kwsys_ns(Terminal_Color_BackgroundBlack)
# define kwsysTerminal_Color_BackgroundRed \
kwsys_ns(Terminal_Color_BackgroundRed)
# define kwsysTerminal_Color_BackgroundGreen \
kwsys_ns(Terminal_Color_BackgroundGreen)
# define kwsysTerminal_Color_BackgroundYellow \
kwsys_ns(Terminal_Color_BackgroundYellow)
# define kwsysTerminal_Color_BackgroundBlue \
kwsys_ns(Terminal_Color_BackgroundBlue)
# define kwsysTerminal_Color_BackgroundMagenta \
kwsys_ns(Terminal_Color_BackgroundMagenta)
# define kwsysTerminal_Color_BackgroundCyan \
kwsys_ns(Terminal_Color_BackgroundCyan)
# define kwsysTerminal_Color_BackgroundWhite \
kwsys_ns(Terminal_Color_BackgroundWhite)
# define kwsysTerminal_Color_BackgroundMask \
kwsys_ns(Terminal_Color_BackgroundMask)
# define kwsysTerminal_Color_ForegroundBold \
kwsys_ns(Terminal_Color_ForegroundBold)
# define kwsysTerminal_Color_BackgroundBold \
kwsys_ns(Terminal_Color_BackgroundBold)
# define kwsysTerminal_Color_AssumeTTY kwsys_ns(Terminal_Color_AssumeTTY)
# define kwsysTerminal_Color_AssumeVT100 kwsys_ns(Terminal_Color_AssumeVT100)
# define kwsysTerminal_Color_AttributeMask \
kwsys_ns(Terminal_Color_AttributeMask)
#endif
#if defined(__cplusplus)
extern "C" {
#endif
/**
* Write colored and formatted text to a stream. Color is used only
* for streams supporting it. The color specification is constructed
* by bitwise-OR-ing enumeration values. At most one foreground and
* one background value may be given.
*
* Whether the a stream supports color is usually automatically
* detected, but with two exceptions:
*
* - When the stream is displayed in a terminal supporting VT100
* color but using an intermediate pipe for communication the
* detection of a tty fails. (This typically occurs for a shell
* running in an rxvt terminal in MSYS.) If the caller knows this
* to be the case, the attribute Color_AssumeTTY may be included in
* the color specification.
*
* - When the stream is displayed in a terminal whose TERM
* environment variable is not set or is set to a value that is not
* known to support VT100 colors. If the caller knows this to be
* the case, the attribute Color_AssumeVT100 may be included in the
* color specification.
*/
kwsysEXPORT void kwsysTerminal_cfprintf(int color, FILE* stream,
char const* format, ...);
enum kwsysTerminal_Color_e
{
/* Normal Text */
kwsysTerminal_Color_Normal = 0,
/* Foreground Color */
kwsysTerminal_Color_ForegroundBlack = 0x1,
kwsysTerminal_Color_ForegroundRed = 0x2,
kwsysTerminal_Color_ForegroundGreen = 0x3,
kwsysTerminal_Color_ForegroundYellow = 0x4,
kwsysTerminal_Color_ForegroundBlue = 0x5,
kwsysTerminal_Color_ForegroundMagenta = 0x6,
kwsysTerminal_Color_ForegroundCyan = 0x7,
kwsysTerminal_Color_ForegroundWhite = 0x8,
kwsysTerminal_Color_ForegroundMask = 0xF,
/* Background Color */
kwsysTerminal_Color_BackgroundBlack = 0x10,
kwsysTerminal_Color_BackgroundRed = 0x20,
kwsysTerminal_Color_BackgroundGreen = 0x30,
kwsysTerminal_Color_BackgroundYellow = 0x40,
kwsysTerminal_Color_BackgroundBlue = 0x50,
kwsysTerminal_Color_BackgroundMagenta = 0x60,
kwsysTerminal_Color_BackgroundCyan = 0x70,
kwsysTerminal_Color_BackgroundWhite = 0x80,
kwsysTerminal_Color_BackgroundMask = 0xF0,
/* Attributes */
kwsysTerminal_Color_ForegroundBold = 0x100,
kwsysTerminal_Color_BackgroundBold = 0x200,
kwsysTerminal_Color_AssumeTTY = 0x400,
kwsysTerminal_Color_AssumeVT100 = 0x800,
kwsysTerminal_Color_AttributeMask = 0xF00
};
#if defined(__cplusplus)
} /* extern "C" */
#endif
/* If we are building a kwsys .c or .cxx file, let it use these macros.
Otherwise, undefine them to keep the namespace clean. */
#if !defined(KWSYS_NAMESPACE)
# undef kwsys_ns
# undef kwsysEXPORT
# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
# undef kwsysTerminal_cfprintf
# undef kwsysTerminal_Color_e
# undef kwsysTerminal_Color_Normal
# undef kwsysTerminal_Color_ForegroundBlack
# undef kwsysTerminal_Color_ForegroundRed
# undef kwsysTerminal_Color_ForegroundGreen
# undef kwsysTerminal_Color_ForegroundYellow
# undef kwsysTerminal_Color_ForegroundBlue
# undef kwsysTerminal_Color_ForegroundMagenta
# undef kwsysTerminal_Color_ForegroundCyan
# undef kwsysTerminal_Color_ForegroundWhite
# undef kwsysTerminal_Color_ForegroundMask
# undef kwsysTerminal_Color_BackgroundBlack
# undef kwsysTerminal_Color_BackgroundRed
# undef kwsysTerminal_Color_BackgroundGreen
# undef kwsysTerminal_Color_BackgroundYellow
# undef kwsysTerminal_Color_BackgroundBlue
# undef kwsysTerminal_Color_BackgroundMagenta
# undef kwsysTerminal_Color_BackgroundCyan
# undef kwsysTerminal_Color_BackgroundWhite
# undef kwsysTerminal_Color_BackgroundMask
# undef kwsysTerminal_Color_ForegroundBold
# undef kwsysTerminal_Color_BackgroundBold
# undef kwsysTerminal_Color_AssumeTTY
# undef kwsysTerminal_Color_AssumeVT100
# undef kwsysTerminal_Color_AttributeMask
# endif
#endif
#endif

View File

@@ -1,22 +0,0 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
#include "kwsysPrivate.h"
#include KWSYS_HEADER(Terminal.h)
/* Work-around CMake dependency scanning limitation. This must
duplicate the above list of headers. */
#if 0
# include "Terminal.h.in"
#endif
int testTerminal(int argc, char* argv[])
{
(void)argc;
(void)argv;
kwsysTerminal_cfprintf(kwsysTerminal_Color_ForegroundYellow |
kwsysTerminal_Color_BackgroundBlue |
kwsysTerminal_Color_AssumeTTY,
stdout, "Hello %s!", "World");
fprintf(stdout, "\n");
return 0;
}