Skip to content

Do not output unwelcome ANSI color codes#557

Merged
gatk555 merged 2 commits into
buserror:masterfrom
edgar-bonet:no-color
Oct 2, 2025
Merged

Do not output unwelcome ANSI color codes#557
gatk555 merged 2 commits into
buserror:masterfrom
edgar-bonet:no-color

Conversation

@edgar-bonet

Copy link
Copy Markdown
Contributor

ANSI color escape codes are usually a nice touch when they land on a tty, as they enhance the text readability. However, when the output is being redirected, they are most often an annoyance. Even on a tty, they are sometimes not welcome, e.g. when keeping a typescript of terminal session.

This pull request makes simavr refrain from using ANSI escape codes in the following cases:

  • when libsimavr is being used outside of run_avr
  • when the standard output of run_avr is not a tty
  • when the environment variable NO_COLOR is set to a non-empty value

The latter is a common convention, widely adopted by many libraries and programs dealing with terminal output.

This pull request is built on top of (i.e. is a superset of) #556.

Fixes: #555.

@edgar-bonet

Copy link
Copy Markdown
Contributor Author

I had a CI fail on error: 'font_color' defined but not used. Force-pushed with the following fixup:

diff --git a/simavr/sim/run_avr.c b/simavr/sim/run_avr.c
index eab651c..e4da1e4 100644
--- a/simavr/sim/run_avr.c
+++ b/simavr/sim/run_avr.c
@@ -34,12 +34,14 @@
 
 #include "sim_core_decl.h"
 
+#ifndef NO_COLOR
 /* ANSI escape codes to be used if color is enabled. */
 static const struct text_colors font_color = {
        .green  = "\e[32m",
        .red    = "\e[31m",
        .normal = "\e[0m"
 };
+#endif
 
 static void
 display_usage(

@gatk555

gatk555 commented Sep 29, 2025

Copy link
Copy Markdown
Collaborator

My personal view is that the first and last commits are enough. Changing the default behaviour may annoy someone.

This will enable turning colors on and off at run time.
Refrain from coloring output if NO_COLOR is defined and has a non-empty
value. This is a common convention.

Link: https://no-color.org
@edgar-bonet

Copy link
Copy Markdown
Contributor Author

@gatk555: Thanks for reviewing this and my previous PR!

Changing the default behaviour may annoy someone.

OK. I rewrote the branch keeping only the first and last commits. This required inverting the logic of the test in the last commit: instead of “if colors are welcome, enable them”, it is now “if colors are unwelcome, disable them”.

@gatk555 gatk555 merged commit 70e9bec into buserror:master Oct 2, 2025
@gatk555

gatk555 commented Oct 2, 2025

Copy link
Copy Markdown
Collaborator

Thanks! G.

@edgar-bonet edgar-bonet deleted the no-color branch October 2, 2025 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add --no-color so I can redirect the output of uart0 but to a file.

2 participants