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, gsize n_fields,
gpointer user_data) gpointer user_data)
{ {
gboolean use_color; static gboolean use_color;
static size_t use_color_init = 0;
FILE *stream; FILE *stream;
char *out; char *out;
const char *no_color_env;
g_return_val_if_fail (fields != NULL, G_LOG_WRITER_UNHANDLED); g_return_val_if_fail (fields != NULL, G_LOG_WRITER_UNHANDLED);
g_return_val_if_fail (n_fields > 0, 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) if (!stream || fileno (stream) < 0)
return G_LOG_WRITER_UNHANDLED; return G_LOG_WRITER_UNHANDLED;
/* Honor NO_COLOR environment variable (https://no-color.org) */ if (g_once_init_enter (&use_color_init))
no_color_env = g_getenv ("NO_COLOR"); {
if (no_color_env && *no_color_env != '\0') /* Honor NO_COLOR environment variable (https://no-color.org) */
use_color = FALSE; const char *no_color_env = g_getenv ("NO_COLOR");
else if (no_color_env && *no_color_env != '\0')
use_color = g_log_writer_supports_color (fileno (stream)); 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); out = log_writer_format_fields_utf8 (log_level, fields, n_fields, use_color, TRUE);