mirror of https://github.com/djcb/mu.git
* add mu_util_color_print for printing color (ANSI) to console
This commit is contained in:
parent
4e904d7c73
commit
bc8c1a0289
|
@ -145,6 +145,43 @@ mu_util_cache_dir (void)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
mu_util_color_print (MuColor col, const char *str)
|
||||
{
|
||||
const char *pfx;
|
||||
const char *reset = "\x1b[0m";
|
||||
|
||||
static int is_tty = -1;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
|
||||
if (is_tty == -1)
|
||||
is_tty = isatty(fileno(stdout)) ? 1 : 0;
|
||||
|
||||
switch (col) {
|
||||
case MU_COLOR_RED : pfx = "\x1b[31m"; break;
|
||||
case MU_COLOR_GREEN : pfx = "\x1b[32m"; break;
|
||||
case MU_COLOR_YELLOW : pfx = "\x1b[33m"; break;
|
||||
case MU_COLOR_BLUE : pfx = "\x1b[34m"; break;
|
||||
case MU_COLOR_MAGENTA : pfx = "\x1b[35m"; break;
|
||||
case MU_COLOR_CYAN : pfx = "\x1b[36m"; break;
|
||||
|
||||
default:
|
||||
g_critical ("invalid color %u", (unsigned)col);
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_tty)
|
||||
fputs (pfx, stdout);
|
||||
|
||||
fputs (str, stdout);
|
||||
|
||||
if (is_tty)
|
||||
fputs (reset, stdout);
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
mu_util_init_system (void)
|
||||
{
|
||||
|
|
|
@ -105,6 +105,27 @@ gboolean mu_util_check_dir (const gchar* path, gboolean readable,
|
|||
const char* mu_util_cache_dir (void) G_GNUC_CONST;
|
||||
|
||||
|
||||
enum _MuColor {
|
||||
MU_COLOR_RED = 0,
|
||||
MU_COLOR_GREEN,
|
||||
MU_COLOR_YELLOW,
|
||||
MU_COLOR_BLUE,
|
||||
MU_COLOR_MAGENTA,
|
||||
MU_COLOR_CYAN
|
||||
};
|
||||
typedef enum _MuColor MuColor;
|
||||
|
||||
|
||||
/**
|
||||
* print string to stdout in a certain color if the output is to a
|
||||
* sufficiently capable tty; otherwise, just print the string. Color
|
||||
* will *only* be printed if stdout actually is a tty.
|
||||
*
|
||||
* @param col a MuColor
|
||||
* @param str a string, or NULL
|
||||
*/
|
||||
void mu_util_color_print (MuColor col, const char *str);
|
||||
|
||||
/**
|
||||
* create a writeable file and return its file descriptor (which
|
||||
* you'll need to close(2) when done with it.)
|
||||
|
|
Loading…
Reference in New Issue