Merge branch 'glib/no-color-env' into 'main'

glog: guard NO_COLOR environment variable check with a GOnce for performance reasons

See merge request GNOME/glib!4904
This commit is contained in:
Philip Withnall
2025-11-12 11:24:12 +00:00

View File

@@ -2712,10 +2712,10 @@ g_log_writer_standard_streams (GLogLevelFlags log_level,
gsize n_fields,
gpointer user_data)
{
gboolean use_color;
static gboolean use_color;
static size_t use_color_init = 0;
FILE *stream;
char *out;
const char *no_color_env;
g_return_val_if_fail (fields != NULL, G_LOG_WRITER_UNHANDLED);
g_return_val_if_fail (n_fields > 0, G_LOG_WRITER_UNHANDLED);
@@ -2724,12 +2724,17 @@ g_log_writer_standard_streams (GLogLevelFlags log_level,
if (!stream || fileno (stream) < 0)
return G_LOG_WRITER_UNHANDLED;
/* Honor NO_COLOR environment variable (https://no-color.org) */
no_color_env = g_getenv ("NO_COLOR");
if (no_color_env && *no_color_env != '\0')
use_color = FALSE;
else
use_color = g_log_writer_supports_color (fileno (stream));
if (g_once_init_enter (&use_color_init))
{
/* Honor NO_COLOR environment variable (https://no-color.org) */
const char *no_color_env = g_getenv ("NO_COLOR");
if (no_color_env && *no_color_env != '\0')
use_color = FALSE;
else
use_color = g_log_writer_supports_color (fileno (stream));
g_once_init_leave (&use_color_init, 1);
}
out = log_writer_format_fields_utf8 (log_level, fields, n_fields, use_color, TRUE);