* add mu_util_color_print for printing color (ANSI) to console
This commit is contained in:
@ -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
|
gboolean
|
||||||
mu_util_init_system (void)
|
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;
|
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
|
* create a writeable file and return its file descriptor (which
|
||||||
* you'll need to close(2) when done with it.)
|
* you'll need to close(2) when done with it.)
|
||||||
|
|||||||
Reference in New Issue
Block a user