|
Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
|
#include <limits>#include <string>Go to the source code of this file.
Enumerations | |
| enum class | StandardOutputStream { Stdout = 1 , Stderr = 2 } |
Functions | |
| bool | nix::isOutputARealTerminal (StandardOutputStream fileno) |
| bool | nix::shouldANSI (StandardOutputStream fileno) |
| std::string | nix::filterANSIEscapes (std::string_view s, bool filterAll, unsigned int width, bool eatTabs) |
| void | nix::updateWindowSize () |
| std::pair< unsigned short, unsigned short > | nix::getWindowSize () |
| std::string nix::filterANSIEscapes | ( | std::string_view | s, |
| bool | filterAll = false, | ||
| unsigned int | width = std::numeric_limits< unsigned int >::max(), | ||
| bool | eatTabs = true ) |
Truncate a string to 'width' printable characters. If 'filterAll' is true, all ANSI escape sequences are filtered out. Otherwise, some escape sequences (such as colour setting) are copied but not included in the character count. Also, tabs are expanded to spaces.
| std::pair< unsigned short, unsigned short > nix::getWindowSize | ( | ) |
The value is cached so this is quick. The cached result is computed by updateWindowSize().
| bool nix::isOutputARealTerminal | ( | StandardOutputStream | fileno | ) |
Determine whether the output is a real terminal (i.e. not dumb, not a pipe).
This is probably not what you want, you may want shouldANSI() or something more specific. Think about how the output should work with a pager or entirely non-interactive scripting use.
The user may be redirecting the Lix output to a pager, but have stderr connected to a terminal. Think about where you are outputting the text when deciding whether to use STDERR_FILENO or STDOUT_FILENO.
| fileno | file descriptor number to check if it is a tty |
| bool nix::shouldANSI | ( | StandardOutputStream | fileno = StandardOutputStream::Stderr | ) |
Determine whether ANSI escape sequences are appropriate for the present output.
This follows the rules described on https://bixense.com/clicolors/ with CLICOLOR defaulted to enabled (and thus ignored).
That is to say, the following procedure is followed in order:
| fileno | which file descriptor number to consider. Use the one you are outputting to |
| void nix::updateWindowSize | ( | ) |
Recalculate the window size, updating a global variable. Used in the SIGWINCH signal handler.